DVCS II

Last year I wrote an article comparing Git, Mercurial, and Bazaar. I came to the conclusion that Bazaar should be the way to go. Now, one year later, I’m about to change my version control system again. Here’s why:

All the good points I wrote about Bazaar are still true. However, both my understanding on how Git works and my priorities changed. I no longer consider it a problem that Git does not allow me to add an empty directory. Also, I learned that git does not track file renames but knows how to detect renames based on the content of a file. While this might not work 100% accurate, it will be good enough for my daily work.

If you remove these points from my list I made back then, replacing Subversion-Import by Bazaar-Import, the rating is: 6/6 (Git), 5/6 (Mercurial), and 5/6 (Bazaar). So a small advantage for git. But wait, there was the out-of-list-category. Git lost one point here due to the badly readable revision number, while Bazaar won one point for work flow and lost 0.5 for speed.

Using Bazaar for one year showed me that I was wrong: The point for work flow was not as positive as I had imagined. I never know whether the repository is currently bound and therefore I have to check that before each and every commit. The small penalty for speed is actually worth a full negative point. Bazaar isn’t slow when doing its work. But loading python, then loading Bazaar’s code and then running Bazaar takes some time. As fast as it might be when it runs, every start takes its time.

On the other hand, blaming Git for using unreadable revision numbers was a bit to harsh. None of my projects uses the revision number at any place that would show it to the user. It might end in a log file but it won’t annoy me as much as I thought back then.

Let’s say, Bazaar fell a bit short, compared to Git. Is this dramatically enough to make me change the VCS (again)? No, it isn’t. But there are other things that made me consider the change:

Firstly, Apple announced that XCode will support Git in the next major release. As I prefer to use the command line when doing version control stuff, this alone would not make me change to Git but it surely does not hold me on Bazaar.

Secondly, I wanted to release a tiny program as open source this week. Both, Git and Bazaar have a large open source hosting sites. For git, it is github, for Bazaar, it’s called Launchpad. I took a test drive on both. Github pleased me well. A very simple interface, upload your project and you’re done. Launchpad’s interface is not that simple. Honestly, it’s quite complicated. The biggest drawback: It does not provide an automated tarball. Every user that wants my code has to be using Bazaar, unless I upload a tarball with every commit I do. This ruled out Launchpad as option.

Kind of Summary

For me, Bazaar is no longer the obvious choice. Bazaar showed some negative sides and the negative sides of Git that I know about no longer bug me that much. Apple’s decision for Git made me think about a (second) switch right when I heard it, and Github vs. Launchpad finally clinched it for me.

We’ll see whether this series becomes a trilogy …