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 w, andwhat 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.


I hate TortoiseSVN, lack of integration with IDEs, it's slow and the UI cumbersome, and why the hell I need shell extensions to do my stuff..
David Elentok said…
First of all, just because something wasn't made by Microsoft, it doesn't mean it's useless.

Second, TortoiseSVN is extremely fast compared to TFS (which is the worst closed-minded source control software I've ever used and we curse each day we use it), has so much more features than TFS, it doesn't render an entire dev team useless for two days when the database reached 30gb (for a 100mb project) and filled up the server's hard drive. Oh, and when two developers use the same computer and their workspaces get joined together for a month and they both can't work (I can go all day about how much TFS sucks).

And last, integration with IDEs? almost every IDE out there has SVN bindings, and Visual Studio has two SVN plugins (fully functional and actively developed), one of which is called AnkhSvn (I don't remember the second one).
So please check the facts before slandering... (I've been working with TFS for about two years, how long have you been working with SVN that you can so easily judge?)
First, I've never said that SVN is bad, or every microsoft product is good.

Second, I am using SVN through web host and TFS through web host and the speed is fairly the same, I feel SVN is slower. and ofcourse TFS has it's problems no, denial, although I've never said it was better by the way.

Third, I again never stated there is no IDE integration for all SVN tools but TortoiseSVN which I found bad and was surprised that this tool get so much credit by the community.
Again the question on how much time I use SVN is irrelevant to the whole issue, to bad you couldn't understand a simple 2 sentence comment.
David Elentok said…
Well, every tool is made for different purposes, don't use TortoiseSVN if you want IDE integration.

I personally really like TortoiseSVN, I use it for all Python/PHP projects, university projects, etc. And I use AnkhSVN (Visual Studio plugin) for C# projects.
I have an automated script (that uses the command line SVN client) to automatically get a specific version, modify the AssemblyInfo.cs files (or add the version at the top of each python file), builds (if needed) and creates a deployment package for it.

What do you find so bad about TortoiseSVN? (keep in mind it's not supposed to have IDE integration).

Popular posts from this blog

Restart the Windows File Sharing Service to fix weird problems

WPF, ImageSource and Embedded Resources

SharpDevelop dark color scheme