32.1.1.2 Supported Version Control Systems
VC currently works with many different version control systems or
back ends:
- SCCS was the first version control system ever built, and was long ago
superseded by more advanced ones. VC compensates for certain features
missing in SCCS (e.g., tag names for releases) by implementing them
itself. Other VC features, such as multiple branches, are simply
unavailable. Since SCCS is non-free, we recommend avoiding it.
- CSSC is a free replacement for SCCS. You should use CSSC only if, for
some reason, you cannot use a more recent and better-designed version
control system.
- RCS is the free version control system around which VC was initially
built. Almost everything you can do with RCS can be done through VC.
However, you cannot use RCS over the network, and it only works at the
level of individual files rather than projects.
- CVS is the free version control system that was, until recently (circa
2008), used by the majority of free software projects. Nowadays, it
is slowly being superseded by newer systems. CVS allows concurrent
multi-user development either locally or over the network. It lacks
support for atomic commits or file moving/renaming. VC supports all
basic editing operations under CVS. 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.
- Subversion (SVN) is a free version control system designed to be
similar to CVS but without its problems. It supports atomic commits
of filesets, and versioning of directories, symbolic links, meta-data,
renames, copies, and deletes.
- GNU Arch is a version control system designed for distributed work.
It differs in many ways from older systems like CVS and RCS. It
provides different methods for interoperating between users, support
for offline operations, and good branching and merging features. It
also supports atomic commits of filesets and file moving/renaming. VC
does not support all operations provided by GNU Arch, so you must
sometimes invoke it from the command line.
- Git is a distributed version control system invented by Linus Torvalds to support
development of Linux (his kernel). It supports atomic commits of filesets and
file moving/renaming. One significant feature of git is that it
largely abolishes the notion of a single centralized repository;
instead, each working copy of a git project is its own repository and
coordination is done through repository-sync operations. VC supports
most git operations, with the exception of news merges and repository
syncing; these must be done from the command line.
- Mercurial (hg) is a distributed version control system broadly
resembling GNU Arch and git, with atomic fileset commits and file
moving/renaming. Like git, it is fully decentralized. VC supports
most Mercurial commands, with the exception of repository sync
operations; this needs to be done from the command line.
- Bazaar (bzr) is a distributed version control system that supports both
repository-based and distributed versioning, with atomic fileset
commits and file moving/renaming. VC supports most basic editing
operations under Bazaar.
Previous versions of VC supported a version control system known as
Meta-CVS. This support has been dropped because of limited interest
from users and developers.