CVS in the scripting landscape
How to use CVS to monitor and manage code changes and improvements
CVS's recent ascent
As its home page says, "CVS is the most popular version control system in the free software community, used by Netscape, *BSD, many Linux projects, and others." You know how popular it is to argue the merits of Emacs versus those of vi, or token-ring versus Ethernet, or SCSI versus IDE versus SAN -- pick any territorial fight that spins your propeller. Just a couple of years ago, it seemed equally urgent to fuss over the change models underlying RCS (Revision Control System) and SCCS (Source Code Control System). That battle's over now, though: CVS (which is built over RCS) won. SCCS and pre-CVS RCS interest mostly historians. Until recently, a fair amount of programmer overhead went into fretting about which version control system to use, or whether to use one at all. With standardization on CVS, all that energy has been liberated to more productive uses.
CVS is a product of Cyclic Software, itself a recent acquisition of the SourceGear Corporation. Cyclic makes the source to CVS available under the GNU Public License (GPL). CVS works most everywhere you want it to: Unixes, Windows, Mac OS, OpenVMS, AmigaOS, BeOS, OS/2, and so on.
CVS comes in two major flavors, local and networked. This column concentrates on the networked version; sometimes, you'll see this called remote CVS, NetCVS, or client/server CVS.
CVS is both the technical means to facilitate this and a symbol of the fashion. There's no necessary relation between CVS and openness, of course. In fact, many commercial products also use CVS, and one area of exploration now is how to make source code available, but with restrictions -- only to those who have paid for a license, for example.
The impact of CVS has the potential to be greatest in what we often regard as the peripheral parts of a project. Software engineers know, at least in principle, how to run a project well enough to achieve code that works at least crudely. Every open source project, though, is behind in documentation, example uses, and testing -- every single one of them. CVS might be part of the technical fix that encourages better collaboration in these areas. This winter, we plan to report on new business models likely to emerge in this area. Particularly exciting are ideas from interviews we've done with Bruce Epstein, principal of Zeus Productions, and Tim O'Reilly of O'Reilly and Associates.
Our conclusion is that CVS is valuable for everyone working with software, whatever their mix of open source and commercial tools.
CVS among the scripters
NetCVS has brought the Tcl community closer to the core development. Users have been able to spot problems before we have had to go through a full release cycle. It also allows users to obtain fixes that are important to them without requiring them to wait for the next patch release.
But enough advertising. You should experience CVS for yourself. To do so, download a networked CVS client (version 1.09 or later of the standard distribution will work fine), and install it on your desktop. Move to a temporary, or working, directory. Suppose you have an interest in JPL, the Java-tized version of Perl that compiles Perl source into Java bytecodes (or will -- it's still a work-in-progress as of October 1999).
Then run these commands (or their equivalents, if you're not operating with a sh-compatible Unix shell):
CVSROOT=:pserver:email@example.com:/usr/local/projects/jpl/cvsroot export CVSROOT cvs login cvs checkout jpl
To do more with CVS, read one of the several tutorials available
online. We particularly recommend Jim Blandy's tutorial (see the Resources section below for details); Blandy is the Guile leader
interviewed for our November
1998 column, and a cofounder of
Cyclic. Among the commands you'll learn first are those that allow you to
interrogate a CVS server about the projects it exposes, report on
any changes between the current state of the central repository and
your local working version, and prepare patches for specific source
updates. For example, if you request
The flip side of CVS and scripting languages
The standard CVS distribution is coded in C, and CVS automations have traditionally been Unix shell scripts that interact at the command-line level. Programmers who've wanted more sophisticated control have already created both client- and server-side modules that allow CVS operations to be written in Java, Perl, Python, Tcl, and other languages. If your ambitions with CVS are bigger than the core application will support, you'll find it easy to customize your own GUI or Web interface with a few lines of your favorite scripting language.
To help you navigate the CVS world, we've prepared an index to public servers likely to interest scripters. See the Resources section below for a pointer to this and other introductory material on CVS.
See the Resources section for related links.
Page 1 of 2, continued...
Advertisement: Support Unix Insider, click here!
|Resources and Related Links|
|Tell Us What You Thought of This Story|
If you have technical problems with this magazine, contact firstname.lastname@example.org
Last modified: Friday, February 09, 2001