CVS Introduction and Resources

CVS — Concurrent Version System — is a free and open source version control application. It was very popular in the early days of the free software movement, but has largely been displaced by git and svn, though there are certainly plenty of projects still using CVS today.

What Is Version Control Software?

Version control systems solve a few problems in software development:

  • During development, you might want to make reversible changes to your code. For example, you may want to try out a new feature and be able to roll it back afterwards, or you may discover you have created a bug and wish to revert to an earlier point when everything was working.
  • Software projects are typically worked on by several people at the same time. There needs to be some way to make sure they do not over write each other's changes accidentally.
  • You often need to release and support multiple versions of a single code base.

A version control system helps alleviate these difficulties by storing every committed change made to a file. Like save points in a video game, it becomes relatively easy to restore a code base to its state as recorded at a particular time in the past.

How Does CVS Handle Version Control?

CVS uses a centralized, client-server model for source control. This means that the authoritative copy of a code repository is stored on a server, and developers connect to that server and "check out" code to work on. Client computers check out a full, working copy of the code from the server, and then check-in their changes. CVS automatically handles version numbering on individual files, based on changes made at check-in.

Unlike some other centralized version control systems, CVS does not lock files when they are checked out. Multiple developers can work on the same files at the same time. However, when you check-in your changes, CVS will only accept changes if they were made to the most recent version of a file. This requires developers to pull in changes from the central repository on a regular basis, and encourages frequent check-ins. Client tools usually automate this task, pulling in changes from the central repo on schedule, and merging non-conflicting changes automatically.

Tutorials

Books on CVS

  • Pragmatic Version Control Using CVS (2003), by Thomas and Hunt, is a brief, but excellent guide to CVS, with a focus on practical "fluent" usage. This book is highly recommended.
  • Essential CVS (2006), by Jennifer Vesperman, covers everything you need to know to use CVS effectively.
  • Open Source Development with CVS (2003), by Fogel and Bar, is a book that covers the technical aspects of using CVS, and also how the tool commonly gets used in the Open Source community. The examples are clear, and well-annotated.

To get a good overview of the most popular version control systems, check out, Top 5 Open Source Version Control Tools for System Admins. It's helpful if you are trying to decide whether CVS, or another system like Git or SVN, is the right tool for your project.

SVN is the most similar system to CVS — they are both centralized version control systems. SVN is newer, has more features, and has become the de facto successor to CVS for large projects. Perhaps the most obvious difference is that SVN does not require that a client check out a complete copy of the code base.

Git is a distributed version control system, in which each copy is on "equal footing" with every other version. Interestingly, Git's current popularity is largely due to GitHub, which makes it easy to create an "authoritative" central repository. Even though the underlying technology of git is different, the way it is commonly used by teams with GitHub is very similar to the CVS approach.

Should I Learn CVS?

Plenty of projects, both closed and open source, continue to use CVS. Obviously, if you are working on one of those, you'll want to learn it. However, it was designed to be fairly easy to learn, and the feature set is minimal — so you can likely pick it up when and if you need to for a particular project.


Further Reading and Resources

We have more guides, tutorials, and infographics related to coding and development:

Would the Internet Survive the End of the World?

Have you ever wondered what a major catastrophe would do to the internet? Check out our infographic, Would the Internet Survive the End of the World? It's possible we could all be destroyed but the internet would live on.