Revision Control System (RCS) is an early implementation of a version control system (VCS). 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.
by Walter F. Tichy at Purdue University. It was an alternative tool to the then-popular Source Code Control System (SCCS) which was nearly the first version control software tool (developed in 1972 by early Unix developers). 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 instructions 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.
A READ_ME file accompanied some versions of RCS which further restricted distribution, e.g., in 4.3BSD-Reno.<!-- Better source needed -->
Ca. 1989, the RCS license was altered to something similar to the contemporary BSD licenses, as seen by comments in the source code.<!-- Better source needed -->
RCS 4.3, released 26 July 1990, was distributed "under license by the Free Software Foundation", under the terms of the GPL.
OpenBSD provides a different implementation called OpenRCS, which is BSD-licensed.
Behavior
Mode of operation
RCS works well with standalone files and supports multi-file projects but, by modern standards, that support is limited: RCS can assemble the versions of multiple files into a single release (via "symbolic names") but it lacks support for atomic commit across those files. Although it provides branching, the version syntax is cumbersome.<!-- need some proper lead-in to point out that tools which use RCS files such as CVS use the same branching, but make it simpler to use --> Instead of using branches, many teams just use the built-in locking mechanism and work on a single head branch.
- Revision saving is not dependent on a central repository
Notes
See also
- Concurrent Versions System (CVS)
- Apache Subversion (SVN)
References
Notes
- Walter F. Tichy: RCS--A System for Version Control. In: Software: Practice and Experience. July 1985. Volume 15. Number 7. Pages 637–654. References to the paper at CiteSeer alternate link to paper
Further reading
- Don Bolinger, Tan Bronson, Applying RCS and SCCS - From Source Control to Project Control. O'Reilly, 1995.
- Walter F. Tichy, RCS—A System for Version Control , 1985
- Paul Heinlein, RCS HOWTO, 2004
External links
- Original RCS at Purdue
