Next: , Previous: Run Control Files, Up: CVS Reference

Working Copy Files

The CVS/ administrative subdirectories in each working copy contain some subset of the following files.

Here is what each file or directory does:

CVS/Base/  (directory)

If watches are on, cvs edit stores the original copy of the file in this directory. That way, cvs unedit can work even if it can't reach the server.


Lists the revision for each file in Base/. Each line looks like this:


EXPANSION is currently ignored to allow for, well, future expansion.


This is the temp file for the preceding. (See CVS/Notify.tmp or CVS/Entries.Backup later on for further explanation.)


Records the name of the program specified by the -i option in the modules file. (See the Repository Administrative Files section in this chapter.)


Stores the revisions for the files in this directory. Each line is of the form:


If CODE_LETTER is present, it must be D for directory (anything else is silently ignored by CVS, to allow for future expansion), and the rest of the items on the line are absent.

This file is always present.


This is just a temp file. If you're writing some program to modify the Entries file, have it write the new contents to Entries.backup and then atomically rename it to Entries.


This is basically a patch file to be applied to Entries after Entries has been read (this is an efficiency hack, to avoid having to rewrite all of Entries for every little change). The format is the same as Entries, except that there is an additional mandatory code letter at the front of every line: An A means this line is to be added to what's in Entries; R means it's to be removed from what's in Entries. Any other letters should be silently ignored, to allow for future expansion.


If this file exists, it means only part of the directory was fetched from the repository, and CVS will not create additional files in that directory. This condition can usually be cleared by using update -d.


Stores notifications that have not yet been sent to the server.


Temp file for Notify. The usual procedure for modifying Notify is to write out Notify.tmp and then rename it to Notify.


The path to the project-specific subdirectory in the repository. This may be an absolute path, or it may be relative to the path given in Root.

This file is always present.


This is the repository; that is, the value of the $CVSROOT environment variable or the argument to the -d global option.

This file is always present.


If there is a sticky tag or date on this directory, it is recorded in the first line of the file. The first character is a single letter indicating the type of tag: T, N, or D, for branch tag, nonbranch tag, or date respectively. The rest of the line is the tag or date itself.


Contains a log message template as specified by the rcsinfo file. (See Repository Administrative Files earlier in this chapter.) It is relevant only for remote working copies; working copies on the same machine as the repository just read rcsinfo directly.


Records the name of the program specified by the -u option in the modules file. (See the Repository Administrative Files section in this chapter.)

Karl Fogel wrote this book. Buy a printed copy via his homepage at

copyright  ©  May 23 2019 sean dreilinger url: