We have been evaluating Git and Bazaar at work, so I thought I would write up some of my thoughts so far.
Bazaar has some real positives going for it. For example, I now plan to use Bazaar for version control with websites I maintain on a remote shared server that I don’t have SSH access to, and who won’t install Git or Subversion for me. All Bazaar needs is FTP access and away it goes – very nice!
The other things that seem good about Bazaar over Git are windows compatibility, (though I haven’t been able to test this actually,) and a lot of familiarity, similarity, and compatibility with SVN. In fact, I can’t think of any advantages SVN has over Bazaar other than popularity and lots of mature tools.
Lastly, Bazaar has some nice tools in Ubuntu which makes sense because Bazaar is a Canonical backed project – so easy to install, and very easy to just use it on simple projects without it getting in the way much. It also works with the new notification system in 9.04 which has some potential coolness for tracking commits on a repository. If you were wanting to contribute to Ubuntu in anyway BZR and hosting code on Launchpad would probably be the way to go. I haven’t worked in collaboration with others or had to deal with merges, conflicts, or patches, so I can’t speak to any of that, but the Bazaar teams goals seem to be making those things very easy.
Git wins out for me based mostly on the fact that I prefer its underlying system. One major difference between Bazaar and Git that it took me a while to understand is that in Git a directory is a branch collection, and in Bazaar a directory is a branch. This is an important difference. Turns out that is the case with a lot of concepts in these two version control systems, and I am still trying to understand the different ways that Bazaar and Git use certain key words like ‘repository’, ‘tree’, etc.
One of the things that initially won me over to Git was cheap and easy branching or merging. The way those things work in Git meshes very well with agile development methods. New or experimental features can be worked on in a branch and merged back in when they are ready. Bazaar can do this sort of thing as well, it’s just not as fast and not as easy.
Git has some real downsides. Nothing huge, just lots of little gotchas, like how it doesn’t track empty directories, or the CRLF/LF issue that happens between Unix and Windows machines, but so far these things don’t outweigh the positives for me.
My tenative conclusion is that when working on solo projects that are straigtforward and don’t require much experimenting BZR might be my new choice for source control. However, working on projects that require a more agile development stategy I will prefer Git.