[MERGE] Explain revision/range identifiers

Robert Collins robertc at robertcollins.net
Fri Sep 5 01:55:41 BST 2008


On Thu, 2008-09-04 at 15:26 -0400, Aaron Bentley wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> John Arbash Meinel wrote:
> > most people think diff & merge consider it open ended (include
> > one end, not the other.)
> 
> If we were changeset-oriented, it would be true.  But I don't see any
> value in perpetuating that misperception.  To diff, a range denotes two
> states, and the output compares them.

for diff, from tree X to tree Y, the diff output includes those things
present in Y and not in X, and those present in X and not in Y.

for merge, like diff, we do a set difference to find added and removed
content.

for log X..Y, if defined in the same manner, we would include the
revisions reachable from Y and not reachable from X, and those reachable
from from X and not reachable from Y (which, interestingly, might define
a good behaviour for log between heads).

Now, IIRC we don't define log in the same way as diff and merge, and
this makes it harder to explain. It doesn't really matter if we're
strictly changeset orientated or not: the diff and merge commands *act*
as if we're using half open ranges. merge X..Y, when X is not already in
the local tree, does a cherrypick and *does not include* content unique
to X. Its half open.

-Rob

-- 
GPG key available at: <http://www.robertcollins.net/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20080905/d9ae4860/attachment.pgp 


More information about the bazaar mailing list