Giving CVS a Facelift

If the command line for CVS intimidates you, consider using a graphical client. There aren't many ways for the administrator of a CVS site to get around the command line, but for the users of the repository it needn't be so black and white. CVS is a client/server technology, and there are graphical tools that take advantage of that protocol.

jCVS is a graphical client program for CVS written in Java. It takes advantage of Swing and JavaHelp, so it looks nice—not clunky like some of the first-generation Java applications. It can run anywhere that you have a Java 1.1 or later Virtual Machine. jCVS can manage multiple projects, representing each project as a folder in its workbench. Double-clicking on a project logs you on to the server, and gives you a document listing of the files you've checked out of the server. Examine files, edit them with your preferred editor, and then check them back in to the server.

Two other clients to look at are MacCVS Pro and WinCVS. MacCVS Pro uses a Finder-like interface that will seem familiar to Mac users. This product is a part of the Open Source software released by Netscape when it released Navigator. Of all the clients I've looked at, it seems the best documented and presumes the least amount of knowledge about CVS. The developers at Netscape did a great job of giving CVS a Macintosh style. WinCVS has a Microsoft Windows feel to it, with a bewildering number of options on the menu bar. Fortunately, this project has recently gained some documentation for its many features and there's a strong mailing-list support group to help you out if you get stuck.

The CVS repository contains information that begs to be browsed online: revision histories, comments on files, and who's responsible for the latest mess on your Web pages. There are ways to display it on the Web, so you don't have to fire up a CVS client just to find information in the repository. There are actually several tools to do this, including a servlet-based version of jCVS. jCVSlet is only in beta and the documentation is practically nonexistent, but it looks very sharp and can be tailored to your specific needs. Another option is Bonsai. Bonsai was created by Netscape and later released to the Open Source community. Bonsai can be given queries to narrow down what it displays. You can zero in on the work of one developer or changes made in a certain date to a specific section of your source tree. Bonsai is feature rich, and its documentation is a bit better than jCVS's, but not a lot better. For a very large project it might be worthwhile to set up one of these.

cvsweb is much easier to install. It's a Perl-based CGI program. Copy it to your cgi directory, edit a configuration file, and you should be up and running. It is not as feature rich as the jCVS servlet or Bonsai, and your repository has to be on the same system as the CGI program, but it will work for most of your needs. The original cvsweb was written by Bill Fenner for the FreeBSD project. Several variations of cvsweb have been written that have added features. One of the most popular variants is the one written by Henner Zeller and Henrik Nordstrsom. Their enhancements include the ability to annotate files in the repository and color-highlighted comparisons of different versions of files.

Links to all of these tools can be found from Cyclic's CVS User Interfaces page at

Stephen Figgins provides technical support for readers of O'Reilly books.