Revision Control System (RCS) is an early implementation of a
version control system
In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
(VCS). It is a set of
UNIX
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
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
Walter F. Tichy (born April 22, 1952, in Bad Reichenhall) is a German computer scientist. He was professor of computer science at the Karlsruhe Institute of Technology in Germany where he taught classes in software engineering until April 2022. H ...
at
Purdue University
Purdue University is a public land-grant research university in West Lafayette, Indiana, and the flagship campus of the Purdue University system. The university was founded in 1869 after Lafayette businessman John Purdue donated land and money ...
. 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
The GNU Project () is a free software, mass collaboration project announced by Richard Stallman on September 27, 1983. Its goal is to give computer users freedom and control in their use of their computers and computing devices by collaborati ...
.
An innovation in RCS is the adoption of ''reverse deltas''. Instead of storing every revision in a file like SCCS does with
interleaved deltas
Interleaved deltas, or SCCS weave is a method used by the Source Code Control System to store all revisions of a file. All lines from all revisions are "woven" together in a single block of data, with interspersed control instructions indicating w ...
, 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:
A
READ_ME
Read
Read may refer to:
* Reading, human cognitive process of decoding symbols in order to construct or derive meaning
* Read (automobile), an American car manufactured from 1913 to 1915
* Read (biology), an inferred sequence of base pairs of ...
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
BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. The original BSD lice ...
, as seen by comments in the source code.
RCS 4.3, released 26 July 1990, was distributed "under license by the
Free Software Foundation
The Free Software Foundation (FSF) is a 501(c)#501(c)(3), 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed ...
", under the terms of the
GPL
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general us ...
.
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
(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.
Advantages
* Simple structure and easy to work with
* Revision saving is not dependent on a central repository
Disadvantages
* 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
First generation
SCCS (first released in 1973) and DSEE (considered a predecessor of
Atria ClearCase), described in 1984, are two other notable VCS software tools. These tools, along with RCS, are generally considered the first generation of VCS as automated software tools.
Second generation
After the first generation
VCS, tools such as
CVS
CVS may refer to:
Organizations
* CVS Health, a US pharmacy chain
** CVS Pharmacy
** CVS Caremark, a prescription benefit management subsidiary
* Council for Voluntary Service, England
* Cable Video Store, former US pay-per-view service
* CVS F ...
and
Subversion
Subversion () refers to a process by which the values and principles of a system in place are contradicted or reversed in an attempt to transform the established social order and its structures of power, authority, hierarchy, and social norms. Sub ...
, 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
xdelta is a command line program for delta encoding, which generates the difference between two files. This is similar to diff and patch, but it is targeted for binary files and does not generate human readable output.
It was first released in 1 ...
instead.
By 2006 or so, Subversion was considered to be 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 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 (or
forks
In cutlery or kitchenware, a fork (from la, furca 'pitchfork') is a utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tines with which one can spear foods ei ...
) of a project and communicate revisions via
changesets.
BitKeeper
BitKeeper is a software tool for distributed revision control of computer source code. Originally developed as proprietary software by BitMover Inc., a privately held company based in Los Gatos, California, it was released as open-source software ...
,
Git,
Monotone
Monotone refers to a sound, for example music or speech, that has a single unvaried tone. See: monophony.
Monotone or monotonicity may also refer to:
In economics
*Monotone preferences, a property of a consumer's preference ordering.
*Monotonic ...
,
darcs
Darcs is a distributed version control system created by David Roundy. Key features include the ability to choose which changes to accept from other repositories, interaction with either other local (on-disk) repositories or remote repositories via ...
,
Mercurial, and
bzr
are some examples of third generation version control systems.
Notes
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
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,
'' 1985
* Paul Heinlein
RCS HOWTO 2004
External links
*
Original RCS at Purdue*
{{Use dmy dates, date=February 2020
1985 software
Free version control software
GNU Project software
Software using the GPL license
Types of tools used in software development