Next: , Up: Introduction to VC


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.