CVS or Else?

In my years as a professional programmer I have used many Revision Control Systems (RCSes). It's that software that manages and protects the software you use. One of the tools of the toolmaker. Many companies pay tens of thousands of dollars for this software, often licensing it per-seat, and yet a perfectly good free alternative exists: CVS. In fact I will argue that there almost no reasons not to use CVS. While there are some other RCSes which beat CVS on technical grounds like parallel development I think that CVS has the edge in everything that counts.

Non-technical reasons to use CVS:


  • Free. And I mean cost, as in saves you hundreds of dollars per seat.
  • Cross platform server. This means you don't have to install/upgrade a server just to support your version control. It goes where you want it to.
  • Cross platform client. You can run CVS on anything. And if you can't then you can recompile it. And if you can't do that, then you can download a 3rd party client. You are never locked in to one system.
  • Open file format. The data storage format is completely open and documented. This makes it easy to do backups, write custom parsers, or switch to another RCS. You are never locked in. This is probably the most important reason to use CVS. Your code is your lifeblood. You can never allow someone else to control it.
  • Open hooks. Like all of the best software it does one thing well (track changes to your code tree) and gives you hooks to do other things. Want to send an email or run a shell script each time code changes? It's a one line command. Reformat the code when it's checked in. Insert version numbers. Trigger unit test verification. Access it over SSH. Authenticate against LDAP. All easy with CVS. All difficult or impossible with proprietary systems.
  • Multiple clients. This is probably the most important to the developer. Use whatever client you want. Use more than one at a time. Strange clients start to appear when we are given this freedom. Tortoise CVS to right click commit from your desktop. Command line cvs for shell scripts to backup config files. The CVS Ant task for Java builds. Plugins for your editor, like jEdit. Sky's the limit for these puppies.

There are reasons to choose proprietary solutions, but must be very good reasons to out weigh the advantages of CVS being open. Choice lets the developer focus on what's important: developing high quality code on time and under budget. The revision control system is the last thing you want to interfere with development.

Choice is good.

Talk to me about it on Twitter

Posted August 6th, 2003

Tagged: programming java.net