12.7. Which Version Control System?
We said earlier that VC uses any of a number of version control
systems (more may be added in the future). It chooses which to use
for any given file by looking for a corresponding master
file—that is, a file containing a change history.
If you're using RCS, each of your project
directories usually has a subdirectory in which RCS masters live. If
you're using SCCS, there are
SCCS subdirectories. CVS is a little trickier;
your project directory has a CVS subdirectory
with control information in it, but CVS masters are typically kept in
one central repository directory, the location of which is typically
given by the CVSROOT environment variable, and will likely be on
another machine completely, using the pserver network protocol.
Subversion, too, uses a separate server machine to store the revision
repository; it generally uses WebDAV over HTTP for its transactions.
Your local Subversion master files are kept in a subdirectory named
.svn.
If VC can't find a master in any of these special
directories, it looks for a master in the same directory as your work
file (so you don't have to create SCCS or RCS
directories if you don't mind your work directories
being cluttered with masters). VC checks each of these possibilities
(so you can actually use more than one system in the same directory,
although we don't recommend it).
If VC can't find a master anywhere, it looks for an
RCS, SCCS,
CVS, or .svn directory. The
order in which these are attempted is controlled by the variable
vc-handled-backends, described in
"Customizing VC" later in this
chapter. The first one it finds tells it which version control system
to register new files with. If it can't find any of
these directories, and you tell it to register a file, it assumes you
want to use RCS and creates the master right alongside your work
file.
To find out which of SCCS, RCS, CVS, or Subversion is available on
your system, simply execute the commands comb, rcs,
cvs, and svn respectively, with no arguments. If you
see an error or usage message, the corresponding system is ready to
use; if you see command not found,
it's not.
|