Elentok's Blog

About me

Distributed Version Control Systems - Part 1

Until about a year ago I was using the Darcs version control system (I used the command line interface), I liked it because it was a stand-alone executable, no external dependencies whatsoever (completely portable), and I could easy backup my repository to an ftp server, and use it directly from there.

The idea in a DVCS is basically that each user has its own local copy of the repository (not just a working copy, but the entire history, sort of a personal branch), so you can basically work offline, view the project's history, commit, rollback and what else, and no one will see your changes until you synchronize your changes to the central repository.

The problem with Dracs was the lack of decent GUI, if I just wanted to see the difference between two versions of a file I had to write a really long line and remember the names or numbers of the revisions. I even started writing a GUI for darcs in python, but I never had the time to finish it.

About a year ago, a friend showed me TortoiseSVN, which was exactly what I was looking for, a very polished UI for a VCS. The only problem with it was that it wasn't distributed, and unless I work with a local repository there's no way of working offline (commit, rolling-back, etc...).

Back when I was using darcs the whole Distributed Version Control System field wasn't very popular, but lately I've started seeing a lot of projects that move from standard version control systems (like SVN) to DVCS.

The three main applications I've seen are:

I currently use SVN with TortoiseSVN, which makes life a whole lot easier, so I looked for something similar, and each one of these application has their own Tortise application:

Notable projects that use Bazzar:

  • iPython (enhanced python shell)
  • MySQL
  • APT (debian packaging tool)

Notable projects that use Mercurial:

  • Mozilla
  • OpenJDK
  • OpenSolaris
  • MoinMoin (wiki)
  • GNU Octave
  • XEmacs

Notable projects that use Git:

  • Linux kernel
  • Google android
  • Qt
  • Ruby on Rails
  • VLC
  • Wine
  • Gnome
  • GTK
  • FFmpeg
  • Fedora

I looked at the "Projects using Darcs" page but I haven't found any projects that I know.

In the upcoming posts I will review each DVCS and then I will decide which one I'm going to use.

Next:Getting the SVN Service to work on Vista