Eeny, meeny, miny, moe, which DVCS should I let go?

A critical tool in a programmer’s chest includes a version control system (VCS) to keep track of software changes. I was initially going to install the Subversion VCS for my new projects, but decided to look around for other alternatives. Over the past couple of days I have found out that there is a lot of activity going on in this historically stagnant part of computing.

My search for alternative version control systems (VCS) started after I had successfully hacked my NSLU2 network appliance so that I could install on it a very popular open-source VCS called Subversion. I managed to get everything installed, however, during configuration I began to have doubts about using it. There were more setup options for Subversion than I wanted to mess with and, with every one, I had to go a little deeper to fully understand how the system worked so that I knew how I wanted it to work. I had been hoping for something more plug-n-play because I’m probably going to be the only person using it. Thus began the hunt for other alternatives.

While poking around the ‘Net, I had run across several different open-source projects focusing on version control, but didn’t really think much of them. Of the names I did see, none stuck out like CVS and Subversion; after all, they were the only real version control systems, right?

Guess again! As I dug deeper I was surprised to find that there is a lot of activity going on in the world of version control. I found over ten different projects all involved in developing what you might call a “modern” version control system! Some of them are Bazaar-NG, DARCS, Monotone, Arch, Git/Cogito, Codeville, Mercurial, and SVK.

The main idea behind many of these new systems is to change the repository model from having a central repository and server to a distributed one where every “checkout” of the source code can be its own repository and server, thus imparting the name of distributed version control systems (DVCS). One of the interesting aspects of these new systems is that they give software developers more flexibility in how they can share code amongst themselves.

Of the projects which I found, I’ve narrowed my options to three: DARCS, Mercurial, and Bazaar-NG. I’ll tell you more about what I decide later, but I will leave you with some of the important pages that I read.

h3. Resources

Project sites
• “http://bazaar-vcs.org/”:http://bazaar-vcs.org/
• “http://darcs.net/”:http://darcs.net/
• “http://www.selenic.com/mercurial/”:http://www.selenic.com/mercurial/

Thoughts from others
• “http://jaortega.wordpress.com/tag/version-control/”:http://jaortega.wordpress.com/tag/version-control/
• “http://blog.ianbicking.org/dvcs-mini-roundup.html”:http://blog.ianbicking.org/dvcs-mini-roundup.html (don’t miss the comments)
• “http://mark.stosberg.com/Tech/darcs/cvs_switch/index.html”:http://mark.stosberg.com/Tech/darcs/cvs_switch/index.html

Comparisons
• “http://better-scm.berlios.de/comparison/comparison.html”:http://better-scm.berlios.de/comparison/comparison.html
• “http://zooko.com/revision_control_quick_ref.html”:http://zooko.com/revision_control_quick_ref.html
• “http://bazaar-vcs.org/RcsComparisons”:http://bazaar-vcs.org/RcsComparisons