CVS Utilities

What is CVS?

CVS stands for Concurrent Version System. This is a version control system, i.e. it allows you to keep multiple versions of source files. Concurrent means that many developers can change the same files and then merge the modifications they have made.

The unique feature of CVS is its ability to provide anonymous read-only access to everybody connected to the Internet. Everybody can get the last minute's sources of a project managed by CVS, as well as scan the previous versions for a particular change in the sources. This and the fact that CVS is released under the GNU General Public License explain why CVS is de-facto the version system for open source software (although please consider Subversion for new projects).

Further information and download instruction are available at the CVS homepage

How does CVS work?

For the complete reference, read the documentation that comes with CVS. It is only important here that the CVS server keeps the information about all versions in the repository, while the working directory on the client side contains only one particular version of every file (most often the latest one) that is under version control (i.e. which has its history saved on the server) as well as derived files that are built from the sources on the client side.

The client and the server are supposed to communicate in order to exchange the changes in the sources. However, the connection to the server is not required for editing the sources and building the project.

What is CVS Utilities?

CVS Utilities is a small (at the time of writing) collection of scripts, mostly in the Perl language, that allow you to manage the files in the CVS working directory. You can tell which files are under version control and which are not without even being online. You can erase or move away all derived files in seconds. Don't even bother to run "make maintainer-clean" - makefiles may be buggy or may need to be created.

You can tune some parameters in the administrative files stored by CVS on the client side. This will allow you to switch from one CVS server to another without hassle with environment variables.

If you (or your editor) are careful enough to save the original copies of the files you modify, you can create a patch without going online! Moreover, since special care is taken to prevent irrelevant information (backup file names, RCS paths, context for ChangeLog entries) from appearing in the resulting patch, it is likely to be even easier to read and apply than the one created by "cvs diff"!

Why separate utilities?

CVS is a client-server system. As such, it provides some functionality that no separate utilities can provide. For example, when you add a file, you may want to be informed that somebody has already created that file.

CVS is used not only over slow connections. Many people use it at work over fast and reliable networks. It takes seconds to check out the fresh copy of the whole repository. Usually this type of development doesn't require sending patches by e-mail.

How free are CVS Utilities?

CVS Utilities are licensed under the terms of the GNU General Public License, Version 2, as published by Free Software Foundation in June 1991.


The latest release is 0.2.6, released on May 31, 2013. User visible changes can be found in the NEWS file.

Mailing lists

The mailing list has been closed because of spam. The size of the project doesn't justify the overhead of setting up spam filtering. If spam is still tolerated in your country, please write to your representative in the legislature (if you are lucky to have one). - general discussion.


Tom Tromey (tromey at - original code
Pavel Roskin (proski at - later changes