[Python-Dev] Hg: inter-branch workflow

John Arbash Meinel john at arbash-meinel.com
Tue Mar 22 16:20:14 CET 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 3/22/2011 3:25 PM, Barry Warsaw wrote:
> On Mar 22, 2011, at 12:52 AM, Éric Araujo wrote:
> 
>> Bazaar apparently has a notion of mainline whereas Mercurial believes
>> that all changesets are created equal.  The tools are different.
> 
> I'm curious: what are the benefits of the Mercurial model?
> 
> -Barry
> 

- From discussions in #bzr, I would say the primary complaint to our model
is that people feel it means that not all revisions are created equal.

Though honestly, that is true. Getting a revision into Linus's kernel
tree is not the same as getting it into my own branch of the kernel.

I do remember discussions where people felt bad that after integrating
someone else's work, by default it showed their name, rather than the
names of the people who had done the actual work. (Though you could
always use --author if you really wanted to change the name on that commit.)


There is a technical argument. A merging B should be idempotent to B
merging A. And certainly, the file-content should be the same after
either operation.

But as I mentioned in the other email, Barry merging my work and
committing it to the hg.python.org/cpython branch is very different
socially than me merging cpython's branch. So bzr is somewhat
distinguishing "things done on this branch" from "things done in other
branches that I have included into this branch.".


Simplicity. If you enforce the mainline concept with
"append_revisions_only=True" on your trunk branches. Then people who try
to do:

 cd my-work
 merge trunk && commit
 push trunk

Will be blocked. While if you did
 cd trunk
 merge my-work && commit
 push trunk

It would succeed. If a tool doesn't give you a benefit from maintaining
a mainline, there is overhead in preserving it.

If your tool defaults to fast-forward merging, it is also really hard to
get the behavior. (git does this with a config option to disable it, bzr
has it as an option to merge [defaulting to off], and I'm not sure what
Mercurial's default is.)

John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2Ivi4ACgkQJdeBCYSNAAOhzwCg0tD1KdR53fH7OEzhom0IaPOL
niYAn2KsY2jPLJmbXWf8sIauMW+y2hHC
=NFdA
-----END PGP SIGNATURE-----


More information about the Python-Dev mailing list