Wednesday, June 6, 2007

Moving to Mercurial

There's been a lot of discussion about version control lately, and here's my little contribution to it.

I've selected Mercurial for the DVCS at work, and that's what I'll be using for my personal projects too. Mostly because I'm not going to learn darcs as well.

The other finalist was git. I was recently watching that Google Talk video featuring Linus Torvalds, and he made a lot of good points (even if you don't like him calling people and entire projects stupid).

We were going to move to Subversion, just because it is the 'better CVS', but we haven't actually started implementing it yet. We aren't really pushing the limits of even CVS yet at work, but we'll be working on some much larger SW projects soon, so now's the time to switch.

For the record, here's what swayed me for Mercurial: cross-platform support (runs on Windows), Trac integration, and written in Python (which will be used for a bunch of our other development tools). By most accounts, it is as fast as git, and doesn't have some of odd corner-case behavior of darcs (which will hopefully be fixed soon).

I have run into one problem with Mercurial already. If you store a repository on a FAT filesystem (my flash drive), it apparently isn't compatible between Windows and Linux. :-(


Dustin Puryear said...

We moved from CVS to Subversion (SVN). There are some really cool things about SVN, like the ability to move files around in the repo very easily, but there are also some annoying things about it--like the fact that it is a little more complicated, and you have to specifically turn on the ability to update $Id$, etc.

Dustin Puryear

mpm said...

Some busybody posted the above as a bug in the Mercurial bug tracking system (

Repos on flash drives should work, and should be sharable between Windows and Linux just fine provided you stay within the bounds of allowed filenames and case-sensitivity on both systems. Please post a more detailed problem report at the above URL.

James Graves said...

I've posted a comment on the Mercurial tracking system. Appears to be a version incompatibility issue (0.9.1 vs. 0.9.3) rather than a Windows vs. Linux or FAT issue. The bug tracking comment has a lot more detail.