Thursday, May 8, 2008

Reviews of Distributed Revision Control: Mercurial

First up on the reviews of distributed revision control systems (DRCS) is Mercurial. This, along with Git, is one of the revision control systems that came out of the big Bitkeeper Debacle of 2005 (believe it or not, I did not come up with that name, and I’m sure it’s trademarked). Long story short, Bitkeeper was the versioning system used by the Linux Kernel developers until Larry McVoy (the CEO of Bitmover) decided to take away the free license. Of course there is much more to the story, but you can read up on that on your own if you care.

Anyway, Mercurial is written in Python with the exception of a few core routines written in C. The command line user interface is very well designed. The commands are intuitive and relatively easy to get used to, especially if you are familiar with Subversion or CVS (If you are still using CVS, you should probably upgrade. Seriously.) Mercurial's output is customizable, making it perfect for scripting. However if you prefer a GUI, there are some available. The classic repository features (such as hooks and permissions) are all there, and it scales well for large projects. Mercurial is used by projects such as NetBeans, Mozilla, and OpenSolaris.

My personal experiences with Mercurial have all been pleasant. It has worked well for small/medium projects, both with me being the only developer and with a few more people contributing to the repository. I have also used Mercurial to manage some patches on top of the Linux Kernel with a great deal of success. Having patch management built on top of the revision control system is incredibly convenient. Just try it.

Stay tuned for the next review, Git.