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.
- CVS: Client-Server Version Control is a detailed, 8-part tutorial on CVS.
- A Quick and Dirty Guide to CVS gives you a brief tour of the most important aspects of CVS.
- How to Do Version Control With CVS is a short, but very helpful, tutorial on CVS by the late Aaron Swartz.
- CVS: Concurrent Versions System is a fairly extensive, book-length tutorial on using CVS.
- Version Management With CVS (PDF) is a 185-page book, covering all aspects of CVS, including its history, and advanced usage.
- Open Source Development With CVS is the online version of the book by Karl Fogel and Moshe Bar.
- Linux: CVS Intro walks new CVS users through installation, setup, and basic usage.
- CVS Mini Tutorial is a short, practical introduction to using CVS.
- Ted’s Tutorial for CVS Revision Control introduces version control generally, provides a tutorial on CVS, links to some helpful additional tools, and provides some handy practical tips for real life usage.
- CVS Version Control for Web Development describes a process for using CVS in a web development project.
- Linux CVS Tutorial is an especially helpful tutorial because it covers how to use CVS as a non-developer. That is, how to use CVS to get source files for an application you want to install locally, and how to use it to keep those files updated. It also covers developer usage.
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.
CVS Compare to Other Systems
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:
- CVS Hosting: learn the basics of CVS and find a web host that supports it.
- SVN Hosting: not just about hosting, learn about this popular version control system.
- Git Primer, Resources, and Cheat Sheet: learn all about one of the most popular version control system today.
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.