23.7.1.1 Supported Version Control Systems
VC currently works with six different version control systems or
“back ends”: CVS, GNU Arch, RCS, Meta-CVS, Subversion, and SCCS.
CVS is a free version control system that is used for the majority
of free software projects today. It allows concurrent multi-user
development either locally or over the network. Some of its
shortcomings, corrected by newer systems such as GNU Arch, are that it
lacks atomic commits or support for renaming files. VC supports all
basic editing operations under CVS, but for some less common tasks you
still need to call CVS from the command line. Note also that before
using CVS you must set up a repository, which is a subject too complex
to treat here.
GNU Arch is a new version control system that is designed for
distributed work. It differs in many ways from old well-known
systems, such as CVS and RCS. It supports different transports for
interoperating between users, offline operations, and it has good
branching and merging features. It also supports atomic commits, and
history of file renaming and moving. VC does not support all
operations provided by GNU Arch, so you must sometimes invoke it from
the command line, or use a specialized module.
RCS is the free version control system around which VC was initially
built. The VC commands are therefore conceptually closest to RCS.
Almost everything you can do with RCS can be done through VC. You
cannot use RCS over the network though, and it only works at the level
of individual files, rather than projects. You should use it if you
want a simple, yet reliable tool for handling individual files.
Subversion is a free version control system designed to be similar
to CVS but without CVS's problems. Subversion supports atomic commits,
and versions directories, symbolic links, meta-data, renames, copies,
and deletes. It can be used via http or via its own protocol.
Meta-CVS is another attempt to solve problems arising in CVS. It
supports directory structure versioning, improved branching and
merging, and use of symbolic links and meta-data in repositories.
SCCS is a proprietary but widely used version control system. In
terms of capabilities, it is the weakest of the six that VC supports.
VC compensates for certain features missing in SCCS (snapshots, for
example) by implementing them itself, but some other VC features, such
as multiple branches, are not available with SCCS. You should use
SCCS only if for some reason you cannot use RCS, or one of the
higher-level systems such as CVS or GNU Arch.
In the following, we discuss mainly RCS, SCCS and CVS. Nearly
everything said about CVS applies to GNU Arch, Subversion and Meta-CVS
as well.