Repository storage
File permissions
The overall structure of the repository is a directory tree corresponding to the directories in the working directory. For example, supposing the repository is in
/usr/local/cvsroot
here is a possible directory tree (showing only the directories):
/usr| +--local| | | +--cvsroot| | | | | +--CVSROOT| (administrative files) | +--gnu| | | +--diff| | (source code to GNU diff) | | | +--rcs| | (source code to RCS) | | | +--cvs| (source code to CVS) | +--yoyodyne| +--tc| | | +--man| | | +--testing| +--(other Yoyodyne software)
With the directories are history files for each file
under version control.  The name of the history file is
the name of the corresponding file with `,v'
appended to the end.  Here is what the repository for
the `yoyodyne/tc' directory might look like:
$CVSROOT| +--yoyodyne| | | +--tc| | | +--Makefile,v+--backend.c,v+--driver.c,v+--frontend.c,v+--parser.c,v+--man| | | +--tc.1,v| +--testing| +--testpgm.t,v+--test2.t,v
The history files contain, among other things, enough
information to recreate any revision of the file, a log
of all commit messages and the user-name of the person
who committed the revision.  The history files are
known as RCS files, because the first program to
store files in that format was a version control system
known as RCS.  For a full
description of the file format, see the man page
rcsfile(5), distributed with RCS, or the
file `doc/RCSFILES' in the CVS source
distribution.  This
file format has become very common---many systems other
than CVS or RCS can at least import history
files in this format.
The RCS files used in CVS differ in a few ways from the standard format. The biggest difference is magic branches; for more information see Magic branch numbers. Also in CVS the valid tag names are a subset of what RCS accepts; for CVS's rules see Tags.