I’ve been a CVS user for years but have spent most of those years cursing its short-comings. The main reasons I stuck with CVS despite this were:

  • Lock-in – there is a lot of code in both my personal CVS repository and the one for the EVE project. If it ain’t broke …….
  • Maturity – CVS has been around for donkey’s years. The code is stable, people know how to use it, and there are loads of tools and tutorials out there. Subversion is a lot newer and still changing.
  • Inertia – it took a lot of poking and prodding over the years to get people using CVS, people don’t want to have to start the learning curve all over again!

I’ve been reading about how great subversion is for ages but had never quite gotten round to trying it myself. The reason I hadn’t tried it was because I’d never had an excuse to dedicate scarce time to it. However, a few weeks ago people in work started voicing an interest in Subversion so I took that as my cue to finally give it a go.

[tags]Source Control, CVS, Subversion, SVN[/tags]

There are lots of things different people find annoying about CVS but for me it just had two serious flaws:

  • No support for moving and renaming files and folders
  • Having to enter your password all the bloody time!

The reality is that when you start a project and first generate a directory structure you’ve probably gotten it at least partly wrong. I certainly never get it right first time. You are also going to be regularly adding files, particularly at the start of a project, and being asked to enter your password each time you do really annoys people. With subversion both problems go away. You can move around files and folders to your heart’s content, and when you add files you don’t have to give your password until you commit your changes.

To make things even better SVN is almost indistinguishable from CVS from a user’s point of view. You still checkout, add and commit. Granted, things are a lot different under the hood and at the server end but your average user doesn’t care about that. They don’t have to administer the server or setup and manage the repositories, they just get, edit, and commit code! Also, most developers don’t seem to use the command-line tools for CVS/SVN but prefer to use IDE plug-ins instead, so the fact that there are now loads of good SVN tools and plug-ins out there makes the transition that much easier for users.

I’ll admit it took me a while to get an SVN server set up but that was mainly because FreeBSD was in the humor for making me compile the sun moon and stars to get it installed 🙂 Even with FreeBSD being compile-happy (that’s what I get for using old alpha hardware) it only took me three afternoons to go from not knowing anything about SVN to having a working server with it’s first production repository setup and working. To get to grips with the basics I found the free O’Reilly book Version Control with Subversion invaluable, and to get SVN installed on a FreeBSD server this article from O’Reilly’s onlamp.com is very helpful.

The only slight downside is that unlike CVS you don’t get SVN ‘out of the box’ with XCode on the Mac but Martin Ott has released a nice OS X package so it’s not really a problem.