Harman Patil (Editor)

Revision Control System

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Original author(s)
  
Written in
  
C

Developer(s)
  
Initial release
  
1982; 35 years ago (1982)

Stable release
  
5.9.4 (January 22, 2015; 2 years ago (2015-01-22)) [±]

Repository
  
git.savannah.gnu.org/cgit/rcs.git/?h=p

Revision Control System (RCS) is an early version control system (VCS). It can be thought of as a set of UNIX commands, that allow multiple users develop and maintain program code or documents. With RCS, users can make their own revisions of a document, commit changes, and merge them together. RCS was originally developed for programs but is also useful for text documents or configuration files that are frequently revised.

Contents

Development

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.

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.

A READ_ME 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, as seen by comments in the source code.

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, was distributed "under license by the Free Software Foundation", under the terms of the GPL.

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 addition 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 to the central repository
  • Disadvantages

  • Poor security system when it comes to an intentional misconduct
  • Only one user can work on a file at a time
  • RCS - A First Generation Tool

    SCCS and DSE/ClearCase (developed in 1972 and 1980 respectively) are two other relatively well-known VCS software tools. These tools are generally considered the first generation of VCS as an automated software tools back in times. RCS, is still used in some projects, but its continued usage is nowhere near more modern tools like GIT.

    Second Generation

    After the first generation VCS tools, later CVS, SVN, and SVK could be considered as the second generation VCS all of which feature a locally centralized repository. Specifically CVS (Concurrent Versions System) has been developed on top of RCS structure, improving scalability of the tool for larger groups, and later branched out PRCS as a simpler CVS-like tool.

    Nowadays, SVN may be considered as the most popular and widely in use VCS tool from this generation which has 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.

    Third Generation

    As Internet opened its path through the world, third generation of these tools emerged providing a decentralized version control system, allowing users to keep their revisions in multiple machines, while contributing to the same project. In this generation there are Git, Arch tools (Bazaar, ArX), BitKeeper, Mercurial, and Monotone and many others as the third generation of VCS software tools.

    References

    Revision Control System Wikipedia


    Similar Topics