Bazaar needs to step it up, Look at Mercurial

At work we use Bazaar. It gets the job done, but I’ve never been able to wrap my head around it. Besides the obvious fact that Bzr is a Distributed RCS, I cannot distinguish or compare it to any other DRCS tools. The main reason behind this problem is the lack of decent documentation. For example, go to their site. Click on Docs at the top. Click on Bazaar User Manual.. it is the only thing that looks comprehensive and detailed. Its basically devoid of any real information. Seriously, do you come away feeling empowered. Do you feel like you know how to use the tool properly? Is there a possibility that a lack of proper knowledge may allow you to shoot yourself in the foot multiple times… machine gun style? I want to code, not mess around with DRCS systems. I’m not alone. The same thing could be said for Git, and a lot of people I know (which is not a huge number 🙂 ) have stopped using it for the same reasons.

Contrast that with Mercurial/Hg. I’ve been seeing some great posts about it lately. It looks pretty easy to use and its as fast as GIT. That is saying a lot since Linus is pretty good at coding and Hg is mostly written in Python. It also just got some huge project wins: Mozilla and OpenSolaris. Now, go to the Hg website. Without going too far down, you can click on the docs. Click on Distributed Revision Control with Mercurial the unofficial manual. Bam! An entire book that can pretty much get you where you need to be. You can skim the table of contents and see that it is pretty comprehensive. If you are just starting out, you can dive into the sections relevant to you. When you are ready to level up later on, you can come back and dive in some more. High fives to the Hg team. This killer combination of open source, great technology, and great documentation is a gift to the human race. I’m totally going to give Hg a try on my next project.

We’ll still use Bazaar at work in the meantime, but I have to wonder a bit about the project. It looks like the only thing going for Bazaar is the millions of dollars er. support by Canonical. I would truly like to understand why Bazaar is better than ‘the rest’, but their documentation and website just won’t let me.

This entry was posted in General. Bookmark the permalink.

11 Responses to Bazaar needs to step it up, Look at Mercurial

  1. Bruce Stephens says:

    Your comment about git is (thankfully) a little out of date. git used to have a pretty horrible interface and a lack of usable documentation (which is partly why I ignored it). But the user manual seems pretty good now—more or less up at the standard of other such manuals, IMHO.

  2. João Marcus says:

    I was using Bazaar in Windows… until I ran into encoding errors with files with non-ASCII characters in their names. I decided to try Mercurial, it worked just fine, so I’ll ditch Bazaar and choose Mercurial from now on.

  3. Wilmer Jenkins says:

    The vast majority of the effort involved in creating that book was invested by a single individual: Bryan O’Sullivan.

    The book really helped me get the ball rolling with Mercurial. I’m very thankful for his hard work.

  4. Noah Tye says:

    Mark Shuttleworth says bzr has superior renaming. He also explained to me why bzr’s renaming works better than hg’s.

  5. Giao Phan says:

    Ian Clatworthy on the core team has begun a set of blog postings about why some of the reasons you might pick bazaar over hg and git:

    http://ianclatworthy.wordpress.com/

  6. Joao says:

    About a week ago I switched back from Mercurial to Bazaar for my projects. I had been using Mercurial for several months to a year, and before that I used a little bit of Bazaar as well. And before Bazaar, I used a little bit of Subversion, Monotone…

    Anyway, Bazaar and Mercurial both work great. Mercurial’s advantages include its super fast algorithms, but I’ve found that with Bazaar 0.17 I can work well enough and not miss the speed of Mercurial.

    BTW, Bazaar has had a constant stream of releases which seems to be more frequent than the ones from Mercurial. The guys working on Bazaar are paid to do so directly I think, while the guys working on Mercurial do so out of will or because some project uses it and has interest in developing it. Hence, Mercurial might be a little more community driven than Bazaar.

    And while the Bazaar folks watch projects like OpenSolaris and Mozilla choose Mercurial, they are working hard to make Bazaar a good alternative to Mercurial in the soon future. In my opinion, Bazaar’s advantages include the sponsorship by Canonical, the team that works on Bazaar seems to be pretty stable as well, working on it since the beginning, and the code base might be a little better than other comparable systems. I list the Bzr-Svn Subversion plugin that Bazaar has, for instance, which seems to integrate nicely with the Bazaar client itself, without requiring multiple binary files as it seems to use the same “bzr” command itself, by working transparently.

    Anyway, I am not an expert on any of them, so take my opinion with a big grain of salt. 🙂

    I would switch from Bazaar to Mercurial only if it was necessary.

  7. dru says:

    Joao,

    But why? You don’t really mention why Bzr is better than Mercurial?

  8. Joao says:

    I think my choice of Bazaar has been made both objectively and subjectively.

    On one hand I wanted to have the Bzr-Svn support which seems a nice have because so many other projects use Subversion, and Bzr-Svn should allow me to work with Subversion as I would with Bazaar itself in some ways. I am not quite sure how well Bzr-Svn works, though, as I only used it experimentally to check out the jQuery JavaScript library source code which is hosted on Google’s subversion servers. Still, I find it easier to adapt myself to other people’s choices for Subversion than to make them switch to a distributed system. 🙂

    Also, since Bazaar 0.17 (the recent release), I think it has improved enough for me to use it again. For example, about 2 years ago, I reported on the Bazaar bug tracker that Bazaar lacked a “bzr log –limit 3” command to limit the returned results which I had learned to like when I used Subversion, and now with Bazaar 0.17 they seem to have fixed it.

    Also, in the past I had problems with character encoding in my file names, so I standardized on “ASCII-like” just to be safe from problems, hence now I can use Bazaar or Mercurial with ease, even though it seems that Bazaar has worked a lot to make such encoding conflicts go away…

    I like that Bazaar has better support for renaming of directories and files as well, even though that’s just a nice have in most cases. 🙂

    I work with Bazaar on three machines: Server, Linux client, Windows client… And when using Windows, I’ve found that I don’t need a putty authentication client I borrowed from a “Tortoise…” program, as Bazaar prompts for the password on the command line just like it would on Linux, while with Mercurial I had to use that “putty authentication client or something”.

    Also, since I started using Bazaar about a week ago, I’ve already created about 150 revisions with it without any problem.

    Finally, the “bzr revert” command creates temporary files that seem to be ignored by default by “bzr status” and maybe other commands, while with “hg revert –all”, the temporary files needed to be deleted or you needed to add them to the ignore list or something. Lazy as I am, I never added them to the ignore and preferred to run commands to delete them when necessary.

    BTW, I have about a dozen repositories, so it’s not like I want to mess around too much as well. 🙂

  9. I evaluated Mercurial and was put off when I realized that it doesn’t do directory renames. When you rename a directory in SCMs like ClearCase, BitKeeper or Bazaar, the system knows that the directory is essentially the same as it always was, only the name has changed. That’s really helpful when you’re merging, perhaps with someone who has also renamed the same directory… Last time I checked (fairly recently), Mercurial treats a directory rename in the same way as Subversion. Basically, it ‘cheats’ by implementing it as a delete and then an add, and claims this workaround will work for most folks most of the time. When you get used to proper directory renames you begin to rely on it. For Java developers, directory renames are very common because of the way Java projects are laid out (in a directory structure that mirrors the package namespaces). So conflicts are much more common and need to be handled properly when merging. That’s basically the only important difference I found between Mercurial and Bazaar. If and when Mercurial catches up in this area, I may switch.

  10. brendan says:

    Malcolm, your description of Mercurial renaming is incorrect. A rename is not simulated by “delete” and “add”, it is recorded as a copy and a delete. This is an important distinction, because it means that Mercurial has the information to do rename merges. And in fact Mercurial handles directory renames quite well in 0.9.4.

  11. Stu says:

    Late to the party I know… I chose bzr over mercurial solely for sftp. My hosted domain cant run servers of my choice, and bzr sftp is soo nice!

    I should add these are all personal projects and I have bzr setup so its centralised (ie: bzr checkout) so when I commit it pushes directly to my site (I like this workflow more than decentralised because these are my personal 1 man projects and its just so much easier to be centralised with 1 person).

    not needing a server is a really big win for me.

    I should also add very seldom do I do reverts, and its mostly a really easy means for me to back my source up to a non-local site with the bonus of seeing branches and commit logs and having the versioning as extra sugar on top.

    I never read any docs on bzr, the workflow is the same as all the others (branch/modify/update/commit), and I’ve not run into anything that has required me to read the docs.

    The HG book is certainly a big win.

Leave a Reply

Your email address will not be published.