03 June 2007

Distributed Revision Control

Linus Torvalds did a talk about source control the other day, more specifically about GIT. Basically he has an immense dislike of centralised revision control. You can see Linus's talk here:



Some Slashdot discussion is available at this link.

This kind of sent me into an Internet whirlpool looking at distributed revision control. So this post will be all about that. I must admit I have never really thought about it since I am so pleased with Subversion and TortoiseSVN, although recent events have made me look into source control systems in general more closely. At a high-level the distributed model has a lot of advantages in design and is capable of having a "central" server you sync against which means it can behave more like the centralised model. On the other hand the centralised tools all seem to have much easier to use tools and have more powerful features (at least in Subversion) than they are given credit for due to their heritage.

Mozilla development has switched to a distributed source control system recently. They had a set of requirements like cross-platform, speed, stability and more. Some more information can be read here.

Git was started by Linus Torvalds because he was no longer able to use BitKeeper. It has quite poor Windows support because it is reliant on a POSIX system but has a lot of powerful features. There are some UI projects but they seem quite immature at the moment and only augment the command ine rather than replace it.

Mecurial was chosen by Mozilla development for their revision control system, and in fact they have already switched to it. There are apparently some speed issues in comparison to Git, but it has better cross-platform support. There seems to be a few extensions including some Bugzilla integration. I am not too sure about the UI side yet.

Other distributed source control systems include:
  • Bazaar - is a GPL based system.
  • Monotone - is another GPL system.
  • SVK - A Subversion derived distributed system.
  • darcs - yet another system.


Anyway these distributed systems seem to be getting traction with Mozilla, X, and other large projects starting to use it.