Revision Control System


Revision Control System is an early version control system. It is a set of UNIX commands that allow multiple users to develop and maintain program code or documents. With RCS, users can make their own revisions of a document, commit changes, and merge them. RCS was originally developed for programs but is also useful for text documents or configuration files that are frequently revised.

History

Development

RCS was first released in 1982
by Walter F. Tichy at Purdue University. It was an alternative tool to the then-popular Source Code Control System which was nearly the first version control software tool. RCS is currently maintained by the GNU Project.
An innovation in RCS is the adoption of reverse deltas. Instead of storing every revision in a file like SCCS does with interleaved deltas, RCS stores a set of edit instrutions to go back to an earlier version of the file. Tichy claims that it is faster for most cases because the recent revisions are used more often.

Legal and licensing

Initially, its license prohibited redistribution without written permission from Walter Tichy:
A READ_ME file accompanied some versions of RCS which further restricted distribution, e.g., in 4.3BSD-Reno.
Ca. 1989, the RCS license was altered to something similar to the contemporary BSD licenses, as seen by comments in the source code.
RCS 4.3, released 26 July 1990, was distributed "under license by the Free Software Foundation", under the terms of the GPL.

Behavior

Mode of operation

RCS operates only on single files. It has no way of working with an entire project, so it does not support atomic commits affecting multiple files. Although it provides branching for individual files, the version syntax is cumbersome. Instead of using branches, many teams just use the built-in locking mechanism and work on a single head branch.

Usage

RCS revolves around the usage of "revision groups" or sets of files that have been checked-in via the "co" and "ci" commands. By default, a checked-in file is removed and replaced with a ",v" file which can then be checked out by anyone with access to the revision group. RCS files reflect the main file with additional metadata on its first lines. Once checked in, RCS stores revisions in a tree structure that can be followed so that a user can revert a file to a previous form if necessary.

Advantages

RCS - a first generation tool

RCS is still used in some projects, but its continued usage is nowhere near that of more modern tools like Git.
SCCS and DSEE are two other relatively well-known ground-breaking VCS software tools. These tools are generally considered the first generation of VCS as automated software tools.

Second generation

After the first generation VCS, tools like CVS and Subversion, which feature a locally centralized repository, could be considered as the second generation VCS. Specifically CVS was developed on top of RCS structure, improving scalability of the tool for larger groups, and later branched out PRCS as a simpler CVS-like tool.
Nowadays, Subversion may be considered as the most popular and widely in use VCS tool from this generation which has filled important weaknesses of CVS. Later SVK developed with the goal of remote contribution feature, but still the foundation of its design were pretty similar to its predecessors.

Third generation

As Internet connectivity improved and geographically distributed software development became more common, tools emerged that did not rely on a shared central project repository. These allow users to maintain independent repositories of a project and communicate revisions via changesets.
BitKeeper, Git, Monotone, darcs, Mercurial, and bzr
are some examples of third generation version control systems.