Revision Control System

Revision Control SystemOriginal author(s)| Walter F. Tichy

|

Developer(s)| GNU Project
Initial release| 1982; 44 years ago (1982)
Stable release| 5.9.4 (January 22, 2015; 11 years ago (2015-01-22)[1]) [±]
Written in| C
Operating system| Unix-like, V[2]
Type| Version control
License| GPL-3.0-or-later[lower-alpha 1][3]
OpenRCSOriginal author(s)| Jean-Francois Brousseau, Joris Vink, Niall O'Higgins, and Xavier Santolaria

|

Developer(s)| OpenBSD
Initial release| 2006; 20 years ago (2006)
Repository| cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/rcs/
Written in| C
Operating system| OpenBSD
Type| Version control
License| BSD
Website| cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/rcs/

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.[4]

## Contents

* 1 History
* 1.1 Development
* 1.2 Legal and licensing
* 2 Behavior
* 2.1 Mode of operation
* 2.2 Usage
* 2.3 Advantages
* 2.4 Disadvantages
* 3 Notes
* 4 See also
* 5 References
* 6 Further reading
* 7 External links

## History

### Development

RCS was first released in 1982[4] 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).[5] RCS is currently maintained by the GNU Project.[6]

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.[4]

### Legal and licensing

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

> 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.

A READ ME file accompanied some versions of RCS which further restricted distribution, e.g., in 4.3BSD-Reno.[8]

Ca. 1989, the RCS license was altered to something similar to the contemporary BSD licenses, as seen by comments in the source code.[9]

> 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.

OpenBSD provides a different implementation called OpenRCS, which is BSD-licensed.[10]

## 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")[11] but it lacks support for atomic commit across those files. Although it provides branching, 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.[4]

### 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.[4]

### Advantages

* Simple structure and easy to work with [12]
* Revision saving is not dependent on a central repository [12]

### Disadvantages

* There is little security, in the sense that the version history can be edited by the users.[12]
* Only one user can work on a file at a time.[13]

## Notes

1. ↑ GPL-3.0-or-later since 2010-06-24.

## See also

* Concurrent Versions System (CVS)
* Apache Subversion (SVN)

## References

1. ↑ "GNU RCS". FSF. 22 December 2015. http://directory.fsf.org/wiki/rcs.
2. ↑ V-System 6.0 Reference Manual
3. ↑ "Update license to GPLv3+.". 2010-06-24. https://git.savannah.gnu.org/cgit/rcs.git/commit/COPYING?id=f3cc1b9908300e07b97972785a7b1c946e75ca3c.
4. ↑ 4.0 4.1 4.2 4.3 4.4 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. http://dl.acm.org/citation.cfm?id=807748. Retrieved 12 June 2012.
5. ↑ Raymond, Eric. "Understanding Version-Control Systems (DRAFT)". http://www.catb.org/~esr/writings/version-control/version-control.html.
6. ↑ "RCS". Free Software Foundation. 22 January 2015. https://www.gnu.org/software/rcs/.
7. ↑ "4.3BSD - /usr/src/new/rcs/src/rcsdiff.c". Walter's Retro Computing Corner Documentation. 19 May 1986. http://www.retro11.de/ouxr/43bsd/usr/src/new/rcs/src/rcsdiff.c.html.
8. ↑ "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/READ_ME". FTP server. 27 February 1989. ftp://ftp.mrynet.com/operatingsystems/CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/READ_ME. [dead ftp link] (To view documents see Help:FTP)
9. ↑ "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/rcs.c". FTP server. 15 August 1989. ftp://ftp.mrynet.com/operatingsystems/CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/rcs.c. [dead ftp link] (To view documents see Help:FTP)
10. ↑ "rcs(1) - OpenBSD manual pages". https://man.openbsd.org/rcs.1#HISTORY.
11. ↑ F. Tichy, Walter: "RCS: A System for Version Control", page 15. Department of Computer Science Technical Reports, Purdue University. Paper 394. https://docs.lib.purdue.edu/cstech/394
12. ↑ 12.0 12.1 12.2 "Revision control concepts – Revision Control System (RCS), Concurrent Versions System (CVS) and Subversion". 2008-12-10. https://mauriziostorani.wordpress.com/2008/12/10/revision-control-concepts-revision-control-system-rcs-concurrent-versions-system-cvs-and-subversion/.
13. ↑ Steinberg, Frank. "Revision Control Systems (RCS, CVS, Subversion, Git)" (in en). Technical University of Braunschweig. https://www.ibr.cs.tu-bs.de/kb/revision-control.html.

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
* `rcs(1)`: RCS file management program – OpenBSD General Commands Manual

* v
* t
* e

Version control software

Years, where available, indicate the date of first stable release. Systems with names in italics are no longer maintained or have planned end-of-life dates.

Local only|

| Free/open-source|

* RCS (1982)
* SCCS (1972)

|

Proprietary|

* PVCS (1985)
* QVCS (1991)

Client–server|

| Free/open-source|

* CVS (1986, 1990 in C)
* CVSNT (1998)
* QVCS Enterprise (1998)
* Subversion (2000)

|

Proprietary|

* AccuRev SCM (2002)
* Azure DevOps
* Server (via TFVC) (2005)
* Services (via TFVC) (2014)
* ClearCase (1992)
* CMVC (1994)
* Dimensions CM (1980s)
* DSEE (1984)
* Endevor (1980s)
* Integrity (2001)
* Panvalet (1970s)
* Perforce Helix (1995)
* SCLM (1980s?)
* Software Change Manager (1970s)
* StarTeam (1995)
* Surround SCM (2002)
* Synergy (1990)
* Team Concert (2008)
* Vault (2003)
* Visual SourceSafe (1994)

Distributed|

| Free/open-source|

* ArX (2003)
* BitKeeper (2000)
* Codeville (2005)
* Darcs (2002)
* DCVS (2002)
* Fossil (2007)
* Git (2005)
* GNU arch (2001)
* GNU Bazaar (2005)
* Mercurial (2005)
* Monotone (2003)
* Veracity (2010)

|

Proprietary|

* Azure DevOps
* Server (via Git) (2013)
* Services (via Git) (2014)
* TeamWare (1992)
* Code Co-op (1997)
* Plastic SCM (2006)

Concepts|

* Baseline
* Branch
* Changeset
* Commit
* Data comparison
* Delta compression
* Fork
* Gated commit
* Interleaved deltas
* Merge
* Monorepo
* Repository
* Tag
* Trunk

* Category
* Comparison
* List

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Revision Control System. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Revision_Control_System&oldid=4218987"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template