Rick Seymour

Version Control Systems – SVN Mercurial GIT Bazaar

Review of Version Control Systems for Linux & Windows

This is a review article on my choice of revision (version) control software.

  • I have never used a Version Control System
  • Source code already in place
  • I edit on Windows XP PC (although I used to develop on my Ubuntu Linux Laptop)
  • The Should I Date.com runs Ubuntu 8.10 Server Edition

Current programming / testing methodology

  • Editting the PHP files with Geany
  • Test code locally using a VMWare image of Ubuntu (with a Shared Drive on the Windows machine linked to the httpdocs dir)
  • Upload via SSH with WinSCP to Should I Date.com

This programming methodology has been used for the past couple of months as I prefer hand coding.

Now however with the code base now becoming more mature I am finding the need to do more performance testing and bug fixing on the code already in place. This has lead to a few situations where for example, the modification of my Database class can have a massive impact on the functionality of parts of the website that I may have wrote several months ago.

I therefore felt it was time to implement a version control system to allow me to quickly “jump back” should I make a mistake.

Control Systems evaluated

Subversion (SVN), Mercurial (HG), GIT & Ubuntu (Canonical) Bazaar (BZR).

I currently have installed TortoiseSVN on my Windows box and a requirement is at most 4 clicks to upload the code I have just updated. There are extensions for HG & SVN & Bazaar, GIT has a similar Windows shell extension.

SVN is by far the most difficult to setup with an existing project, after 20 minutes of fiddling with svn import file:///, coupled with the fact I had problems connecting with svn + ssh I gave up on SVN.

Git was much easier to set up and get working and was not selected purely on the lack of decent Windows client available

HG and Bzr are very similar in their implementation and I liked HG’s inotify plugin.

Bazaar (BZR) chosen

Bazaar was chosen mainly due to Bazaar Explorer, a cross platform BZR, diff, merge platform which easily allows you to add, remove files and directories from the tree, to commit and update your tree. It is very extensible however and easily allows you to choose your own editor, diff, merge external applications.

My only annoyance of Bzr is that it does not appear to do a remote update when you sync with the host tree, which is easy to implement with SVN.

Leave your Reply:

Comments on:

Version Control Systems – SVN Mercurial GIT Bazaar
5 comments
  1. kaapstorm

    Rick, check out the bzr-upload plugin. It can upload changes to a remote machine (that doesn’t have bzr installed on it) over FTP or SSH. I find it’s the easiest way to upload changes to our shared server.

    April 23, 2010 at 2:31 pm Reply
    • Barbie

      FINCASOR : Ouais c’est vrai, il raconte n&rpmuo;iqsorte quoi l’autre, là, à propos de l’image vide de personnage. Et dire qu’on va encore se le taper demain, rhâlàlà !

      May 1, 2016 at 1:40 pm Reply
  2. Marius Gedminas

    Jelmer, I create a svn post-commit hook that runs svn up on the checkout directory on the server (provided that that directory is not locked by svn):

    #!/bin/sh
    # /path/to/repository/hooks/post-commit
    # $1 is repository path, $2 is revision number.
    CHECKOUT=/path/to/workingdir
    test -f $CHECKOUT/.svn/lock || /usr/bin/svn up $CHECKOUT

    I use this to publish my blog automatically on svn commit.

    March 1, 2010 at 8:48 am Reply
    • Rick Seymour

      The question is how do you link that from the client side?

      I like Bazaar’s tag line “Version Control for Human Beings”

      I did have a bug on Bazaar with the directory taking 3-4 seconds to refresh , but turning off “add icon overlay” stopped that.
      Jelmer – that bzr-push-and-update does not appear to function, I could not find any configuration for it, but I’ll dig deeper.
      This hook really… from any CVS is really the final thing in making CVS user-friendly

      I’ve decided on WinSCP for my development (to quickly push files to my testing area) but then use Bazaar Commit->Update to push changes to my server

      March 1, 2010 at 9:18 am Reply
  3. Jelmer Vernooij

    You should be able to update remote working trees using the push-and-update plugin (https://edge.launchpad.net/bzr-push-and-update)

    I’m not aware of a way to do this using Subversion though, as far as I can tell Subversion can only update local working copies as well. How would you do this?

    February 27, 2010 at 8:43 pm Reply