Wednesday, September 10, 2008

Subversion: The "sequel" to CVS

Subversion is a sort of open-source "sequel" to CVS, the classic open-source version control system that dates back to 1989. The Subversion FAQ is very clear about this:

Why does this project exist? To take over the CVS user base. Specifically, we're writing a new version control system that is very similar to CVS, but fixes many things that are broken. See our front page.

And it seems to be very successful as a CVS replacement. Simon Tatham, the developer of PuTTY, switched from CVS to Subversion in late 2004 and has almost uniformly positive things to say about it:

I've described my experiences so far of migrating from CVS to Subversion, and using Subversion. In particular:

  • userv can be used to give Subversion a security model vastly superior to that of CVS.
  • FSFS is king, and permits anonymous access with a high confidence of security. This means Subversion 1.1.
  • Migrating from CVS is easy if you don't mind the way cvs2svn sets things up for you, but gets a lot more difficult the more perfectionist you get. However, if you only do it once it's worth putting some effort in!

Although I've described some issues above which might or might not be considered bugs in Subversion, in general they're easy enough to work around, and in most respects I think Subversion amply fulfills its promise of being ‘CVS, only done properly’. I like it, and I don't regret migrating. I'd do it again.

Subversion also won the 2005 Jolt Award for best Change and Configuration Management Tool:

Subversion provides an attractive alternative to expensive, high-end, source code management packages. Several features make it particularly appealing: Check-ins of multiple files are done as a single changeset, and check-ins of changesets are atomic—all modified files are checked in as a single transaction, or none of them are. Subversion rolls back a partially completed check-in should a problem occur. This step prevents incorrect versioning in case of a conflict or error. Subversion supports check-ins of entire directories as a single commit, which makes for facile updates of entire projects. It also supports the use of metadata—either text or binary—that can be associated with any and all files. Add easy, inexpensive branching and multiple networking protocols, and you have a winning product. On top of that, Subversion offers a server that's more portable than CVS and more functional than Windows, and that can run in stand-alone mode or as a module in Apache 2.x. All these goodies add up to the best version-control product on the market today. The fact that it's free and open-source is just a bonus.

The name Subversion is also quite clever. It reminds me of the Church of the Subgenius:

But getting Subversion set up in Windows is a little bit daunting. I'll cover how to do that in my next post.

No comments: