Revision Control System

For revision control systems in general, see Revision control.
Revision Control System
Original author(s) Walter F. Tichy
Developer(s) GNU Project
Initial release 1982
Stable release 5.9.4 (January 22, 2015[1]) [±]
Written in C
Operating system Unix-like
Type Revision control
License GNU General Public License
Website www.gnu.org/s/rcs/

The Revision Control System (RCS) is a software implementation of revision control that automates the storing, retrieval, logging, identification, and merging of revisions. RCS is useful for text that is revised frequently, for example programs, documentation, procedural graphics, papers, and form letters. RCS is also capable of handling binary files, though with reduced efficiency. Revisions are stored with the aid of the diff utility.

Development

RCS was first released in 1982[2] [3] by Walter F. Tichy while he was at Purdue University. RCS was an alternative to the then-popular Source Code Control System (SCCS). It is currently maintained by the GNU Project.

Licensing

Initially (through version 3, which was distributed in 4.3BSD), its license prohibited redistribution without written permission from Walter Tichy:[4]

* Copyright (C) 1982 by Walter F. Tichy
*                       Purdue University
*                       Computer Science Department
*                       West Lafayette, IN 47907
*
* 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.
* Report problems and direct all inquiries to Tichy@purdue (ARPA net).

A READ_ME file (which contained no date information) accompanied some versions of RCS which further restricted distribution, e.g., in 4.3BSD-Reno.[5] Because there is no date information, it is not possible to determine when it was added; it is not present in the previously cited source.

Later (perhaps May 1 1989 based on $Log$ comments in the source code), the RCS license was altered to something similar to the contemporary BSD licenses, as seen by comments in the source code.[6]

# Copyright (C) 1982, 1988, 1989 Walter Tichy
# All rights reserved.
#
# 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.

RCS 4.3, released July 26, 1990, contains a README stating

This directory contains complete sources for RCS version 4.3,
Sat Nov 18 13:34:16 EST 1989

The source code in this release shows a GPL license beginning with Tichy's copyright:

/* Copyright (C) 1982, 1988, 1989 Walter Tichy
   Distributed under license by the Free Software Foundation, Inc.

The available sources do not provide precise dates because some changes were made without updating the RCS identifier in the source and accompanying documentation (compare the 4.3BSD-Reno[7] and RCS 4.3 releases[8][9]).

Mode of operation

RCS operates only on single files; it has no way of working with an entire project. 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.

Successors

Concurrent Versions System (CVS)

A simple system called CVS was developed capable of dealing with RCS files en masse, and this was the next natural step of evolution of this concept, as it “transcends but includes” elements of its predecessor. CVS was originally a set of scripts which used RCS programs to manage the files. It no longer does that; rather, it operates directly on the files.

Project Revision Control System (PRCS)

A later, higher-level system, PRCS[10] uses RCS-like files, but was never simply a wrapper. In contrast to CVS, PRCS improves the delta compression of the RCS files using Xdelta.

Advantages

In single-user scenarios, such as server configuration files or automation scripts, RCS may still be the preferred revision control tool as it is simple and no central repository needs to be accessible for it to save revisions. This makes it a more reliable tool when the system is in dire maintenance conditions. Additionally, the saved backup files are easily visible to the administration so the operation is straightforward. However, there are no built-in tamper protection mechanisms (that is, users who can use the RCS tools to version a file also, by design, are able to directly manipulate the corresponding version control file) and this is leading some security conscious administrators to consider client/server version control systems that restrict users' ability to alter the version control files.

Application

Some wiki engines, including TWiki and Foswiki, use RCS for storing page revisions.

References

  1. "GNU RCS". directory.fsf.org. FSF. 22 January 2015.
  2. "RCS man page". Retrieved 2010-02-07.
  3. 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.
  4. "4.3BSD - /usr/src/new/rcs/src/rcsdiff.c". Walter's Retro Computing Corner Documentation. May 19, 1986. Retrieved November 15, 2014.
  5. "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/READ_ME". February 27, 1989.
  6. "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/rcs.c". August 15, 1989.
  7. "CSRG/cd2/4.3reno/usr/src/contrib/rcs/". August 15, 1989.
  8. "Official RCS Homepage". Retrieved November 15, 2014.
  9. "RCS FTP Site". July 26, 1990. Retrieved November 15, 2014.
  10. MacDonald, Joshua P (May 9, 2004). "PRCS, the Project Revision Control System". Retrieved 2008-12-12.
Notes

External links