2 Getting started

This document assumes that you know what CVS is, and that you at least know the fundamental concepts of CVS. If that is not the case, you should read the CVS documentation. Type info -f cvs or man cvs.

PCL-CVS is only useful once you have checked out a module. So before you invoke it, you must have a copy of a module somewhere in the file system.

You can invoke PCL-CVS by typing M-x cvs-examine RET. You can also invoke it via the menu bar, under ‘Tools’. Or, if you prefer, you can also invoke PCL-CVS by simply visiting the CVS administrative subdirectory of your module, with a prefix argument. For example, to invoke PCL-CVS in a separate frame, type C-u C-x 5 f ~/my/project/CVS RET.

The function cvs-examine will ask for a directory. The command ‘cvs -n update’ will be run in that directory. (It should contain files that have been checked out from a CVS archive.) The output from cvs will be parsed and presented in a table in a buffer called *cvs*. It might look something like this:

Repository : /usr/CVSroot
Module     : test
Working dir: /users/ceder/FOO/test

In directory .:
           Need-Update            bar
           Need-Update            file.txt
           Modified               namechange
           Need-Update            newer
In directory sub:
           Modified               ChangeLog

--------------------- End ---------------------
-- last cmd: cvs -f -z6 -n update -d -P --

In this example, your repository is in /usr/CVSroot and CVS has been run in the directory /users/ceder/FOO/test. The three files (bar, file.txt and newer) that are marked with ‘Need-Update’ have been changed by someone else in the CVS repository. Two files (namechange and sub/ChangeLog) have been modified locally, and need to be checked in.

You can move the cursor up and down in the buffer with C-n and C-p or n and p. If you press c on one of the ‘Modified’ files, that file will be checked in to the CVS repository. See Committing changes. You can also press O to update any of the files that are marked ‘Need-Update’. You can also run M-x cvs-update RET (bound to M-u in the *cvs* buffer) to update all the files.

You can then press = to easily get a ‘diff’ between your modified file and the base version that you started from, or you can press l to get the output from ‘cvs log’. Many more such commands are available simply by pressing a key (see Getting info about files).