Hg ftw

Tuesday 5 May 2009This is 14 years old. Be careful.

These are good days for Mercurial, the Python-based distributed version control system. First Python chooses Mercurial. Then Google Code announces support for Mercurial, the first DVCS it supports. Now ActiveState comes out with Workspace, its project hosting product, which supports Subversion, git, and you guessed it, Mercurial.

I don’t understand the reasons why Mercurial is getting all the headlines these days over Bazaar, which has a number of high-profile users of its own.

But I’ve liked Mercurial since choosing it and Bitbucket for hosting Coverage.py. I’m glad that a clear leader is emerging among the non-git DVCS systems. It makes decisions easier.


As a tech newshound, I hear nothing about bzr outside ubuntu/launchpad. It's bizarre because 2 years ago, you heard about git, hg, bzr about equally with the occasional monotone and darcs reference. These days it's all git and hg. The main driver behind git is github, which is in turn wagged by the rails crew. On the other hand, hg is being driven by a number of unrelated large projects (mozilla being a big one) and now google code.

I'd actually tip momentum towards git over hg, but I think we'll wind up with split market. The next few years will be hg/git/svn split with the first two eventually taking over the svn base as people get comfortable with dvcs. Ultimately it won't matter that hg/git split the market because the models are close enough that you can make the tools manage the other's repo. Github just announced a mercurial plugin that does just that.
For reference, GitHub's hg-git plugin: http://hg-git.github.com/
Correction on ActiveState's Workspace: currently just subversion, mercurial is definitely planned and git is a maybe.
When I was picking my DVCS choice about two years ago, I passed on git (usual reasons - lack of Windows support and my brain is not that of Linus Torvalds).

I did try to adopt bzr first since I am an Ubuntu user but got quite frustrated, especially since it tried to do everything! Every page of documentation was about how any workflow imaginable could be done by bzr. There wasn't a checklist item it wouldn't have a check for. The (only?) public hosting service for bzr, Launchpad, also appeared to be overly complex as well as slow.

Hg was refreshing in that it was very limited in what it could do (by comparison). But that made the documentation far less complex. Also having been a svn user, I could usually guess commands.

By analogy I'd say bzr is like Perl and hg is like Python :-)
As an analogy, I'd say:

- git <-> Perl: powerful, gratuitously complicated, utterly unusable;

- bzr <-> Ruby: nice, too clever for their own good;

- hg <-> Python: simple, beautiful, a tad idiosyncratic.
I knew I'd forgotten a recent piece of news, the git-hg bridge was it. Thanks for adding it.

@Trent: you may want to look at the page ActiveState has up about Workspace, or maybe the page should be fixed. It says, "Workspace supports Subversion, Mercurial and Git so you choose the revision control system that fits your needs! (Mercurial and Git currently in testing)".
I hope these three DVCS systems can collaborate and come up with a common file format, so that the choice bzr, hg, and git can be left up to the user rather than tied to the project. Is it reasonable to imagine a project hosted in this common format, with different contributors using the DVCS tool of their choice?
Brad: that's unlikely to happen for backwards compatibility reasons. A shared wire protocol is much more likely to happen, but still has problems (because of minor incompatibilities, revision hashes differ under git and hg, for example, meaning you'd have to rehash or use a cached mapping).

bzr is just uninteresting to me, because it's slow (maybe not as slow as it used to be) and it's many overhauls of internal formats indicate that it's based on shoddy engineering to begin with. Additionally, some of the code I've seen looks more like Java than Python. hg's codebase can be terse, but it's pretty easy to read, for the most part.
I have a project hosted with Launchpad+Bazaar and that thing crawls big time.

Although Bazaar claims speed, I think one of the reasons behind me using Hg is speed. It is nothing compared to Bazaar.

Plus, I like more code.google.com than Launchpad.

Launchpad has a weird UX design.

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.