SCM: The Next Generation

Date: January 25, 2007 Last modified: January 25, 2007

I am sure most developers (whether Java, Ruby, Python, or other) have used Subversion, Perforce or CVS to manage and control their projects' source, but have you used darcs or git?

I'm sure most of you would have heard of git it hosts the Linux kernel code currently. Less of you have probably heard of darcs before. Prior to this evening, the most notable point of darcs to me, is that it is written in Haskell. Both git and darcs are examples of distributed version control systems (DVCS) of which there has been an explosion of products (both commercial and open source) since GNU's Arch.

Tonight I had the fortune of experiencing darcs for the first time. Previously I had used darcs get URL to download code before, but had not utilized any other feature before. Tonight I submitted a patch to a Ruby open source project (RForum) and found the experience very pleasurable as a developer.

I have read that darcs is a user friendly version of git minus some powerful options.

Perhaps there are git or darcs gurus reading that can shed more light on these two less mainstream SCM systems? If so, I would love to hear your thoughts on them especially if you can compare and contrast with any non-trivial Subversion, Perforce or CVS experiences.

Background: I currently use Subversion, however, I usually work in smaller teams, so concurrent work is not that much of an issue at present, but things will be changing. The largest team I worked in on a Subversion project was 6 active developers (9 for the one Perforce project). Previously I worked on a project with over 80 developers, but that was using ClearCase and there were many problems with that project that I can't determine what was caused by ClearCase or the rest of the project's many issues.