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.

CVS/Baserev

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

     FILE/REVISION/EXPANSION

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

CVS/Baserev.tmp

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

CVS/Checkin.prog

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

CVS/Entries

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

     [CODE_LETTER]/FILE/REVISION/DATE/[KEYWORD_MODE]/[STICKY_OPTION]

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.

CVS/Entries.Backup

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.

CVS/Entries.Log

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.

CVS/Entries.Static

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.

CVS/Notify

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

CVS/Notify.tmp

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

CVS/Repository

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.

CVS/Root

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.

CVS/Tag

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.

CVS/Template

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.

CVS/Update.prog

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 red-bean.com

copyright  ©  February 22 2019 sean dreilinger url: https://durak.org/sean/pubs/software/cvsbook/Working-Copy-Files.html