Posted Thursday, November 20th, 2008 at 12:07 am under python, tech.

bzr viz is so nice

A year ago we switched from SVN to Bazaar for source code control. I started using source code control in 1989 with RCS after comparing it with SCCS. Then I duly moved to CVS and on to SVN. In retrospect, they all sucked pretty badly but each in turn was a big improvement and seemed great at the time.

The topic of source code control is a very complex one. There’s tons of debate online about the advantages of various packages. I don’t want to get into details, plus there are details that I don’t fully appreciate anyway. It really is complex – at least if you want to do anything even a little bit sophisticated, e.g., with multiple users working on multiple branches.

Anyway, we wanted to move away from SVN, which is cumbersome, too manual and heavyweight (at least in its handling of branches), and requires you to talk to a centralized server all the time. Plus it has no handling of directories or symbolic links, and you lose history in merging. There are other problems and annoyances too.

A distributed version control system seemed like the way to go.

We looked closely at Bazaar and Mercurial. I was prejudiced towards Mercurial. I liked its name, I liked the coolness of the Qwerty-symmetric hg command, and above all I liked how lightweight and simple it is. We took a quick look at Git, but it looked like a bit of a hodge-podge and we’re Python fanboys, so we fairly quickly decided against it.

From what I’ve read, all of Bazaar, Mercurial and Git are excellent. It’s clear that they leave SVN for dead. When I run across open source projects, especially new projects, that are still using SVN I silently raise an inner eyebrow.

But like I said, I don’t want to get into details. What I do want to do is say that I really like a plugin for Bazaar called viz (aka vizualize). It’s in bzr-gtk in case you use apt-get.

You just type bzr viz and it pops a glorious window with a visualization of your branching and merging history. The image above is just a fragment of the full window. The most recent activity is at the top, so as you look down the page you’re looking at older and older branches and merges. On the left you see the branch numbers. The vertical lines are the branches, the left-most being the trunk (in this case). You can see that the 2 right-most branches have no activity in the fragment shown.

If you want to take a look at more of the window, showing a different part of the tree, click on the following image.

Not only does Bazaar make branching really lightweight, it takes all the uncertainty out of the process (ever try merging branches in SVN, reading the log file to make sure you’ve got the right revision numbers before entering the extremely long command?). Plus you get full history when merging (and this is nicely displayed in the output of bzr log) and with a tool like bzr viz you can just see the history. Our tree has some much more complex sections, including one where Esteve had 25 branches going at the same time! And yes, they all got merged to trunk. Bazaar makes branching and merging so simple you just start to do it all the time, and it becomes very natural. Then you just merge whatever you like into whatever you like and gradually merge your way back into the trunk (after merging the trunk into your branch first to have a look at things). It’s great.

That’s it. No time for blogging. I’m waiting for someone to upload a patch so I can continue working. Meanwhile, lightweight distributed version control has really changed how we work. It’s much much better. If you’re still using SVN and haven’t checked out Bazaar or Mercurial (and there are several others), you really should.

Tags:

  • http://www.95buy.cn www.anly.info

    SearchNic.com Free hosting is a complete solution with you everything you need to run your own website. Our powerful free hosting plan has PHP 5 and MySQL support. You get a free sub-domain, FTP access. Add on your own TLD using the domain manager.The Automatic Script Installer (Like Fantastico) is included with every free hosting plan. You can install many popular scripts such as PHPbb2 & PHPbb3, WordPress, Zen-Cart, osCommerce, MyBB, UseBB, MyLittle Forum, 4images, Coppermine, SMF, Joomla, e107, XOOPS, PHP Wind, CuteNews, Mambo, WikiWig and many more! No need to wait for uploading files, Our Automatic Script Installer deploys the files in seconds!

    1024 MB disk space,Vista Panel,Web mail
    10 GB Monthly transfer,Password protected folders,POP email accounts
    3 MySQL databases,Automatic installer,Park Domains
    6 Add-on domains,FTP account,Php MyAdmin
    6 Sub domains,Browser File,manager Clustered servers

    Link: Sign Up

  • http://www.logilab.org Arthur Lutz

    You can also try out hgview as an nice alternative to “hg view”, quicker, nicer UI, a few extra functionnalities : http://www.logilab.org/project/hgview

  • http://www.logilab.org/ Arthur Lutz

    You can also try out hgview as an nice alternative to “hg view”, quicker, nicer UI, a few extra functionnalities : http://www.logilab.org/project/hgview

  • http://www.tekNico.net/ Nicola Larosa

    I’m http://twitter.com/tekNico , obviously, but I don’t twit, I don’t pownce, I don’t even blog. I think I’m at Web 1.2, 1.25 at most. ;-)

    I’m on Jabber/GTalk, IRC, ICQ and Skype daily, though, and on many mailing lists and newsgroups. Yes, Usenet, that prehistoric conglomerate, it still works, somewhat.

  • http://www.tekNico.net/ Nicola Larosa

    I’m http://twitter.com/tekNico , obviously, but I don’t twit, I don’t pownce, I don’t even blog. I think I’m at Web 1.2, 1.25 at most. ;-)

    I’m on Jabber/GTalk, IRC, ICQ and Skype daily, though, and on many mailing lists and newsgroups. Yes, Usenet, that prehistoric conglomerate, it still works, somewhat.

  • http://jon.es terry

    Hi Nicola!

    I was thinking of you just the other day, and your original email. I interact on and off with fuzzyman on Twitter (he’s voidspace there). I’m http://twitter.com/terrycojones You?

    Esteve – it’s not clear what you were linking to. I guess to a story about Launchpad being open-sourced, or cloned. I think I remember you telling me something about that a couple of months ago?

  • http://jon.es/ terry

    Hi Nicola!

    I was thinking of you just the other day, and your original email. I interact on and off with fuzzyman on Twitter (he’s voidspace there). I’m http://twitter.com/terrycojones You?

    Esteve – it’s not clear what you were linking to. I guess to a story about Launchpad being open-sourced, or cloned. I think I remember you telling me something about that a couple of months ago?

  • esteve

    Plus, the bzr+Launchpad combo seriously kicks ass. Terry and I are already using it for our free software projects. I wish we could use it internally, I hope this comes true:

    http://www.phoronix.com/scan.php?page=news_item&px=NjYwOA

  • esteve

    Plus, the bzr+Launchpad combo seriously kicks ass. Terry and I are already using it for our free software projects. I wish we could use it internally, I hope this comes true:

    http://www.phoronix.com/scan.php?page=news_item&px=NjYwOA

  • http://www.tekNico.net/ Nicola Larosa

    The equivalent for Mercurial is the “hg view” command, enabled by the hgk extension. There’s also a text version, “hg glog”, enabled by the graphlog extension.

    Configuring the hgk extension is somewhat convoluted, ask if you need help. :-)

  • http://www.tekNico.net/ Nicola Larosa

    The equivalent for Mercurial is the “hg view” command, enabled by the hgk extension. There’s also a text version, “hg glog”, enabled by the graphlog extension.

    Configuring the hgk extension is somewhat convoluted, ask if you need help. :-)

  • http://jon.es terry

    BTW Em, there is a tool called Tailor that (I think) can help with a migration from SVN to something else. I read that it’s not quick, but it gets the job done.

  • http://jon.es/ terry

    BTW Em, there is a tool called Tailor that (I think) can help with a migration from SVN to something else. I read that it’s not quick, but it gets the job done.

  • http://jon.es terry

    I think you should scan that drawing and put it online as a purely anthropological gesture.

    You don’t need someone to give you bzr hosting if you’re just renting your own box somewhere. You just install it yourself. There are some places that do free hosting, but as far as I know they’re for open source projects. SVN really is a dog.

  • http://jon.es/ terry

    I think you should scan that drawing and put it online as a purely anthropological gesture.

    You don’t need someone to give you bzr hosting if you’re just renting your own box somewhere. You just install it yourself. There are some places that do free hosting, but as far as I know they’re for open source projects. SVN really is a dog.

  • http://www.clearcart.com Emily Dickinson

    Terry,
    Bar forwarded me the link to this post. I’ve not found svn to be a very big win over CVS, other than quicker branching, and handling of directories. I’ve maintained, by hand no less, a drawing of all branches, with merge history. Has scribbles all over it, everywhere.

    Will look into finding cheap bzr hosting. Thx for the post bad boy.
    Em

  • http://www.clearcart.com/ Emily Dickinson

    Terry,
    Bar forwarded me the link to this post. I’ve not found svn to be a very big win over CVS, other than quicker branching, and handling of directories. I’ve maintained, by hand no less, a drawing of all branches, with merge history. Has scribbles all over it, everywhere.

    Will look into finding cheap bzr hosting. Thx for the post bad boy.
    Em

  • http://jon.es terry

    Hi Elliot. I’ll go check it out – thanks!

  • http://jon.es/ terry

    Hi Elliot. I’ll go check it out – thanks!

  • https://launchpad.net/~statik/ Elliot Murphy

    Hi Terry, I’m really glad to read that you are enjoying using bzr. I like it too! Another plugin that I especially enjoy is difftools, makes it very nice for reviewing branches using meld.

  • https://launchpad.net/~statik/ Elliot Murphy

    Hi Terry, I’m really glad to read that you are enjoying using bzr. I like it too! Another plugin that I especially enjoy is difftools, makes it very nice for reviewing branches using meld.