The Free Software world, like the rest of the tech world, is sometimes seized by trends. Distributed version control is one of those trends. In recent months, project after project has switched to "next-gen" version control tools. Developers sing the praises of their favored tools louder than a gaggle of Haskell programmers. And those of us still using SVN wonder if maybe we're missing something good.
You may have gotten a dose of this agita recently, from one of the following sources:
- Linus' talk on git
- Mozilla Switches to Next-Gen Version Control
- Whose Distributed VCS is the Most Distributed?
It is the last of these that really struck this author. Throwing Subversion in a comparison of distributed version control systems is a terrible idea! Subversion has never tried to be, pretended to be, or claimed to be a distributed version control system. And who made distributed the definition of "good", anyhow? I was an old hand at SVN, after all, and I didn't see what was so wonderful about these new-fangled devices. As far as I could tell, this new software was different, not necessarily better, just like Haskell, and I didn't think it was right to bash svn just because it was old-fashioned.
So the Shootout was born. Basically, it was my response: "Whose VCS is the Most Centralized?" I hoped to show that svn has valid use cases that aren't addressed by distributed version control systems -- specifically, I hoped to show that SVN was faster, smaller, and more reliable than git, darcs, and every other system people were hollering about, for the range of tasks that SVN addresses.
When that didn't work, I branched out, trying to study what performance characteristics each system had, and trying to the optimal balance between performance, space efficiency, and features, to try to pick one for myself. And in the mean time, I started to look at the day-to-day use of these systems, to try to see what differences there really were.
Lots of people are looking for a good system to switch to. For example:
I hope the shootout will help them to make a decision, without doing a comprehensive evaluation:
The source code for this whole project happens to be tracked in git and is accessible from http://code.betacantrips.com/vcs-shootout.git/.