The tools described in this section are too unique to be categorized easily. However, they are very useful. They range from a tool to clear out old data from the history file, to a tool to mount the repository as a filesystem.
This Perl program sends email when the CVS repository is changed. You can configure when to send the mail, and what to put in the mail message. It's intended to be used in the loginfo or commitinfo scripting files. activitymail is available from http://search.cpan.org/~dwheeler/activitymail/.
This script removes most of the old records from the history file in the CVSROOT directory in the repository. It keeps records of file modification, addition, and removal, keeps the last change to each tag, and removes everything else. This effectively compresses the history file by removing most of the outdated data. cln_hist is available from the contrib directory in the CVS source code.
B.6.3. CPAN VCS::CVS
VCS is an abstracting library for Perlit allows programmers to write applications which use version control, but which are somewhat independent of the actual version control system in use. One of the version control systems that VCS supports is CVS. The CPAN VCS libraries are available from http://search.cpan.org/~gmccar/VCS-0.14/VCS.pm or from http://sourceforge.net/projects/vcs/.
This script implements access-control lists within CVS. It must be the only script in the commitinfo file in the CVSROOT directory and should be set as DEFAULT so that it is called by all files. The script permits access control based on the username, project directories, and branches within the projects. cvs_acls is available from the contrib directory in the CVS source code.
CVSCheck provides status information for files in the current sandbox. Its output is more concise than the output of cvs status or cvs log, so it's a handy tool for checking status in large sandbox directories. CVSCheck is available from the contrib directory in the CVS source code. In 1.12.7 and later, this is called sandbox_status.
CVSFS is a tool for mounting a CVS repository as a filesystem. It works only with the pserver access method (as of CVS 1.1.9). By default, it displays the current (HEAD) revision of the trunk of any file. Its main use is reading a repository, and it can be useful as a build tool. CVSFS is available from http://sourceforge.net/projects/cvsfs/.
CVSlib is another library to insulate an application from the CVS commands. Each function in the library returns the data from CVS, already parsed and ready for use by the application. CVSlib is available at http://cvslib.tigris.org.
B.6.8. CVS Utilities
This is a collection of small utilities, mostly to help manage sandboxes. It includes a tool to change the stored repository path in a sandbox; a tool to perform tasks such as file addition or deletion while disconnected from the repository; and a tool to remove all derived files from a sandbox, leaving only the core files. CVS Utilities is available at http://www.red-bean.com/cvsutils/.
CVS2vendor allows you to add a vendor branch to a project you created without using cvs import to make a vendor branch. It moves the project to a new repository directory, but it preserves tags and change records. The branch revision of each file on the vendor branch is given the same timestamp as revision 1.1 of that file. CVS2vendor is available from the contrib directory in the CVS source code.
The descend script is obsolete for use with most CVS commands, but it may be useful in obscure situations. It permits you to descend through a directory tree recursively, running an arbitrary command at each point. descend is available from the contrib directory in the CVS source code.
newcvsroot changes the repository path for a whole sandboxvery handy when you need to move a repository and you have users who haven't released their sandboxes. They'll need to use a tool like this (or manual editing) to reuse their existing sandbox. newcvsroot is available from the contrib directory in the CVS source code.
rcslock is described in Chapter 5. It enables you to lock files so that only the developer who holds the file lock can commit a file. This tool is especially useful when you have binary files or other files that cannot be merged. rcslock is available from the contrib directory in the CVS source code.
This script, run from within a sandbox directory, provides a list of files and their status. It reports on files which have been added, changed, or removed, but not committed. sandbox_status is available from the contrib directory in the CVS source code.
validate_repo checks a repository for file corruption. It doesn't actually fix the corruption, but it provides a report on its results. validate_repo is available from the contrib directory in the CVS source code.