Revision Control System
|Original author(s)||Walter F. Tichy|
5.10.0 / 20 October 2020
|Operating system||Unix-like, V|
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.
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 (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.
Legal and licensing
Initially (through version 3, which was distributed in 4.3BSD), its license prohibited redistribution without written permission from Walter Tichy:
Copyright (C) 1982 by Walter F. Tichy [...] All rights reserved. No part of this software may be sold or distributed in any form or by any means without the prior written permission of the author.
Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by Walter Tichy.
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.
RCS revolves around the usage of "revision groups" or sets of files that have been checked-in via the
co (checkout) and
ci (check-in) commands. By default, a checked-in file is removed and replaced with a ",v" file (so foo.rb when checked in becomes foo.rb,v) which can then be checked out by anyone with access to the revision group. RCS files (again, files with the extension ",v") 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.
- Simple structure and easy to work with 
- Revision saving is not dependent on a central repository 
- There is little security, in the sense that the version history can be edited by the users.
- Only one user can work on a file at a time.
Related tools and successors
RCS - a first generation tool
SCCS (first released in 1973) and DSEE (considered a predecessor of Atria ClearCase) 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.
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 (Concurrent Versions System) was developed on top of RCS structure, improving scalability of the tool for larger groups, and later PRCS, a simpler CVS-like tool which also uses RCS-like files, but improves upon the delta compression by using Xdelta instead.
By 2006 or so, Subversion was considered to be as the most popular and widely in use VCS tool from this generation and 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.
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 (or forks) of a project and communicate revisions via changesets. BitKeeper, Git, Monotone, darcs, Mercurial, and bzr are some examples of third generation version control systems.
- GPL-3.0-or-later since 2010-06-24.
- "GNU RCS 5.10.0 available"; author name string: Thien-Thi Nguyen; publication date: 20 October 2020; retrieved: 24 October 2020.
- V-System 6.0 Reference Manual
- "Update license to GPLv3+". 24 June 2010.
- Tichy, Walter (1982). "Design, implementation, and evaluation of a Revision Control System". ICSE '82 Proceedings of the 6th International Conference on Software Engineering: 58–67. Retrieved 12 June 2012.
- Raymond, Eric. "Understanding Version-Control Systems (DRAFT)". www.catb.org. Retrieved 13 February 2017.
- "RCS". GNU Project. Free Software Foundation. 22 January 2015. Retrieved 27 June 2015.
- "4.3BSD - /usr/src/new/rcs/src/rcsdiff.c". Walter's Retro Computing Corner Documentation. 19 May 1986. Retrieved 15 November 2014.
- "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/READ_ME". 27 February 1989.
- "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/rcs.c". 15 August 1989.
- RCS 4.3 README file.
- "Revision control concepts – Revision Control System (RCS), Concurrent Versions System (CVS) and Subversion". IT PASSION - "IT professional Blog". 10 December 2008. Retrieved 20 February 2017.
- Steinberg, Frank. "Revision Control Systems (RCS, CVS, Subversion, Git)". Technical University of Braunschweig. Retrieved 20 February 2017.
- MacDonald, Joshua P (9 May 2004). "PRCS, the Project Revision Control System". Retrieved 29 October 2021.
- 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
- Official website
- Original RCS at Purdue
- OpenBSD General Commands Manual : RCS file management program –