[Python-Dev] And the winner is...

Stephen J. Turnbull stephen at xemacs.org
Tue Mar 31 07:31:13 CEST 2009

Mike Coleman writes:

 > Just for curiosity's sake, could someone outline the five (or so)
 > most significant pluses of hg relative to git?

I think really it comes down to Guido's intuition.

However, without attempting to channel Guido, as the git proponent in
the PEP I'd like to go on record as saying that I'm quite satisfied
with the outcome.

The main thing is that git strongly encourages direct manipulation of
the commit DAG, in the way that Lisp encourages direct manipulation of
lists (even more so than Python does!)  This opens the door to
dramatic changes in the public workflow over time, viz. movement
toward a Linux-kernel-like workflow.  But the BDFL is not Linus, and
Python is not the Linux kernel.  My feeling (as the git proponent in
the PEP who was surprised about the pushback I felt) is that some
Python developers are visceral conservatives about workflow.  Even
cracking that door is unnerving.  And most would rather avoid changes
in the *community* workflow, despite eagerly looking forward to the
changes in *personal* workflow that any of the distributed VCSes will

My feeling is that in that context, it's not a matter of which is
"best".  They're all good.  But from the point of view of maintaining
the good points of the current workflow, while enabling experiment and
improvement by individual developers, I think Mercurial is most
conservative alternative of the three.

I also just wrote a long post about the comparison of bzr to hg
responding to a comment on bazaar at canonical.com.  I won't recap it
here but it might be of interest.

 > I think git probably should have been written in Python with some
 > stuff in C where necessary,

It wouldn't be that hard to do a rewrite in Python, but the git
programmers are mostly kernel people.  They write in C and shell.
No big deal -- except to Pythonistas.<wink>

 > and (perhaps) the hg guy really is right when he claims that Linus
 > should have skipped git and used hg from the start.

Unlikely.  As Terry says, people have different preferences for
tools.  The important one here is whether you see history as immutable
fact and direct manipulations of the commit DAG as falsification, or not.

People who lean toward the DAG as *recording* history will prefer
Mercurial or Bazaar. People who tend to see the DAG as a tool for
*presenting* changes will prefer git.

More information about the Python-Dev mailing list