BazaarNG and Mercurial and Git
Apr 26th, 2006 by Phil Dawes
I’ve been using bazaarNG (bzr) for bicyclerepairman version control recently, but I’ve also got a close eye on Mercurial(hg) and Git.
Git is Linus’ implementation of a distributed SCM tool (sort of) for use with managing the decentralized development of the linux kernel, Mercurial is a project started at much the same time as Linux steered away from the commercial bitkeeper.
Here’s the differences according to my very limited experience:
- Both mercurial and git feel more snappy and responsive than bzr. The hg command returns immediately, most operations are O(1) or O(files).
- Bzr and Mercurial are x-platform and work on windows. Git only works on unix (slowly on cygwin apparently).
- Bzr and Mercurial implement a single branch in a working directory. For multiple branches, you need multiple copies of the working directory. Git provides multiple branches in the same working directory, and you change between them with ‘git checkout <branchname>’.
- Bzr is python only, Mercurial is python with a bit of C, Git is C only. Git is currently more of a pain to build - no autoconf.
- Tailor 0.9.21 can convert both to and from bzr and git repositories, but only to mercurial.
- Bzr is maintained by a commercial company, which always makes me a little wary - does the development community disappear when the company goes bust?

You might want to check out bzr 0.8 when it comes out (should be within a week), as it addresses a number of the issues you bring up.
There is a new branch format that will improve network performance.
There is a new repository concept that allows you to share the version control information for multiple branches in a shared location (a parent directory). If your branches are related, this will save a lot of space. You can also have branches without a working tree (i.e. only version control data).
And while bzr is backed by Canonical, there is a fair number of external contributors (just check the revision history).
Coming very late to the game, but Mercurial is still a lot faster than bzr, and handles in-repo branching, a la git.
Hg is faster than bzr but git is much faster than Hg.
Atleast on my Pentium D machine it is.
Has nice branches feature in the same directory which is really really helpful.
Tags act as checkpointing snapshots for me.
I can create a new branch from a working tag or overwrite a messed up branch :-).
indeed there are too many commands but essential ones are very simple to use.
In end IMHO git is way to go if you are choosing to manage your src on a POSIX complaint filesystem.
If you prefer windows ,i ll suggest Hg.
thanks
I’m stuck to using AIX 5.3 at work.
Of Darcs, Git, Cogito and the lot, Bzr (1.2 at the moment) is the only thing that I can even get working (and I’m very used to tinkering for days with configure to get things ironed out).
Much to my surprise, Python 2.5.2 was relatively straight-forward on AIX. (event though IBM’s AIX Linux Toolkit offers 2.3* only!) That gives me Bazaar pretty much for free.
Bzr has come a long way: it doesn’t feel sluggish to me, has awesome integration with subversion (our central repo).
GIT was absolutely horrible to try to compile/build/install. I sort of got it working, (basically doing all msgfmt and install steps manually) but then it started borking at runtime. Not a happy git