monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] Re: user friendly revision identifies (was: Re: few


From: Emile Snyder
Subject: Re: [Monotone-devel] Re: user friendly revision identifies (was: Re: few remarks)
Date: 03 Dec 2004 06:00:14 -0800

Hi all,

I have been (mostly) lurking on this list for awhile now, so I hope it
isn't too presumptuous of me to jump in with this... please take with
the grain of salt necessary for non code-accompanied ideas.

It seems to me that the desirable properties (from a user perspective)
for revision identifiers are:
* Unique across all repositories (hashes are excellent)
* Short enough and pronounceable enough that you can remember them.  At
least to the extent that you can look at one, look away, and write it
down.  (Full hashes are not so good, but unambiguous abbreviations are
promising.  I think that slightly longer and memorable is better than
slightly shorter and hard to remember.)
* Encode lineage information (hashes don't help)

I drew the following small example to stare at and try to think about
the situation:

Database a:           Database b:

a:1.1 A                    / A \ a:1.1
      |                    | | |
a:1.2 B  --> pull ------>  \ B / a:1.2
      |                      |
a:1.3 C                      D   b:1.3
      |                      |\
a:1.4 E                b:1.4 F G  b:1.4.1
                             |  |
                             |  H b:1.4.2
                             | /
                             I b:1.5

The A, B, C etc. are standing in for hashes, the n.m forms are always
assigned from the local point of view, and the a: and b: are standing in
for repository specific identifiers.  Possibly server key unambiguous
abbreviations?  But in this case, after a sync you can still
unambiguously say a:1.4 or b:1.4.

Am I missing some obvious problems?  It seems that something like this
gets you pretty close to all the desirable user properties for revision
names.

Thanks for you time, and sorry if I'm spouting off out of my depth ;)
-emile

On Fri, 2004-12-03 at 03:08, Nathaniel Smith wrote:

> Hmm, I think I can make a general argument, in fact:
>   Point the first: people don't care about these sorts of numbers in
>     an absolute scale.  If I just tell you something is revision
>     8.9.38.1, you have no idea what that means.  People only care
>     about relative numbers (that number becomes meaningful if I'm also
>     talking about 8.9.38.4 at the same time).
>   Point the second: mostly, this still doesn't matter for viewing
>     revisions, because the only sane way to examine history in
>     Monotone is through some graph viewer anyway.  If I'm trying to
>     find the relation between two versions, I'll pull up my
>     visualization tool, not try to decipher obscure strings of digits;
>     it'll be way more informative, no matter how clever our coding for
>     the digits.
>   Point the third: this doesn't apply as much for interacting with
>     revisions; I may well want to, given a revision, generate the id
>     of its parent(s), or of its child(ren), in cases like the diff
>     example above.
> Point the conclusion: the real problem is to have some way to, given
> an id, refer to a related revision.
> 
> If that's right, then maybe what we need is some sort of
> itty-bitty-mini-language for referring to revisions?  We already have
> this with the selector syntax; perhaps it should be extended some?
> I'm always leery of inventing a new syntax when something simpler
> might do, but there's some independent reason to think this might be a
> good idea; we have Too Many Namespaces and have to tame them
> _somehow_.  We have revision ids, and file ids, and tags, and dates,
> and authors, and branches, and branch heads, and intersections of the
> above, and 'the current working copy', and parents/children of the
> above, and some file name relative to one of the above...
> 
> Here, I'll throw in some extremely disjointed notes I made to myself a
> while back trying to explore this space a little bit...
> 
> -- Nathaniel

+----------------------------------------------------------------------
C treats you like a consenting adult. Pascal treats you like a naughty
child. Ada treats you like a criminal. -- Bruce Powel Douglass 
+----------------------------------------------------------------------

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]