Tuesday, November 10, 2009

More on Modern Version Control

Lately, I've been trying to select a modern choice of VCS for personal (and freelance) work, as well as picking a recommendation for my current place of employment. I'm leaning towards Git (see my previous post), but I would still like to head off any potential arguments for the other contenders - in this case, namely Mercurial.

Here's a very detailed comparison of the top three DVCS solutions: Git, Mercurial, and Bzr (which I'm not considering). It doesn't necessarily make the choice for me, but it gives a good idea of what the advantages and disadvantages are.

One sticking point of Git, when it comes to making a recommendation at the office, is that it has very poor Windows support. It is really only available via Cygwin and doesn't really have any decent GUI tools outside of Linux. Given that I use OS X for personal and freelance work, this isn't an issue.

Mercurial (or Hg, which is its command-line executable - and the atomic symbol for Mercury -- very clever) has great support on Windows, but this isn't surpising: it's written in Python. This means that, in general, it is fairly cross-platform. There is also good a GUI tool for Windows, namely TortoiseHg.

The one thing that's not clear for me from this comparison is which tool has the better branching and merging model. Git has it's rebasing and can do complete historical merges, as well as more of a standard branch/merge model. Mercurial's model is less well known to me at this time, so perhaps the next step in this decision process is finding an equivalent of Pro Git for Mercurial.

0 comments: