Revision Control System

Last updated
Revision Control System
Original author(s) Walter F. Tichy
Developer(s) GNU Project
Initial release1982;38 years ago (1982)
Stable release 5.9.4 (January 22, 2015;4 years ago (2015-01-22) [1] ) [±]
Repository OOjs UI icon edit-ltr-progressive.svg
Written in C
Operating system Unix-like
Type Version Control
License GNU General Public License
Website www.gnu.org/s/rcs/

Revision Control System(RCS) is an early 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. [2]

Contents

History

Development

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

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 instrutions 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. [2]

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

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

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

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

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

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

Advantages

Disadvantages

RCS - A First Generation Tool

RCS is still used in some projects, but its continued usage is nowhere near that of more modern tools like Git. [3]

SCCS (released in 1972) 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 back in times.

Second Generation

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 branched out PRCS as a simpler CVS-like tool.

Nowadays, Subversion may be considered[ by whom? ] 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. [3]

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

Related Research Articles

The Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is a free client-server revision control system in the field of software development. A version control system keeps track of all work and all changes in a set of files, and allows several developers to collaborate. Dick Grune developed CVS as a series of shell scripts in July 1986.

Apache Subversion Free and open source software versioning and revision control system

Apache Subversion is a software versioning and revision control system distributed as open source under the Apache License. Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System (CVS).

The history of software configuration management (SCM) in computing can be traced back as early as the 1950s, when CM, originally for hardware development and production control, was being applied to software development. The first software configuration management was most likely done manually. Eventually, software tools were written to manage software changes. History records tend to be based on tools and companies, and lend concepts to a secondary plane.

patch (Unix) text processing software

The computer tool patch is a Unix program that updates text files according to instructions contained in a separate file, called a patch file. The patch file is a text file that consists of a list of differences and is produced by running the related diff program with the original and updated file as arguments. Updating files with patch is often referred to as applying the patch or simply patching the files.

Source Code Control System (SCCS) is a version control system designed to track changes in source code and other text files during the development of a piece of software. This allows the user to retrieve any of the previous versions of the original source code and the changes which are stored. It was originally developed at Bell Labs beginning in late 1972 by Marc Rochkind for an IBM System/370 computer running OS/360.

GNAT Programming Studio integrated development environment

GNAT Programming Studio is a free multi-language integrated development environment (IDE) by AdaCore. GPS uses compilers from the GNU Compiler Collection, taking its name from GNAT, the GNU compiler for the Ada programming language.

A versioning file system is any computer file system which allows a computer file to exist in several versions at the same time. Thus it is a form of revision control. Most common versioning file systems keep a number of old copies of the file. Some limit the number of changes per minute or per hour to avoid storing large numbers of trivial changes. Others instead take periodic snapshots whose contents can be accessed with similar semantics to normal file access.

Git Free and open source revision control software

Git is a distributed version-control system for tracking changes in source code during software development. It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows.

In software development, distributed version control is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer. This enables automatic management branching and merging, speeds up of most operations, improves the ability to work offline, and does not rely on a single location for backups.

Sun WorkShop TeamWare is a distributed source code revision control system made by Sun Microsystems. It was first announced in November 1992 as SPARCworks/TeamWare and ProWorks/TeamWare and made commercially available in 1993. Last available as part of the Forte Developer 6 update 2 product, TeamWare is no longer being offered for sale, and is not part of the Sun Studio product.

Open-source software development is the process by which open-source software, or similar software whose source code is publicly available, is developed by an open-source software project. These are software products available with its source code under an open-source license to study, change, and improve its design. Examples of some popular open-source software products are Mozilla Firefox, Google Chromium, Android, LibreOffice and the VLC media player. Open-source software development has been a large part of the creation of the World Wide Web as we know it, with Tim Berners-Lee contributing his HTML code development as the original platform upon which the internet is now built.

Mercurial cross-platform, distributed revision-control tool for software developers

Mercurial is a distributed revision-control tool for software developers. It is supported on Microsoft Windows and Unix-like systems, such as FreeBSD, macOS and Linux.

TortoiseSVN Subversion client, implemented as a Microsoft Windows shell extension

TortoiseSVN is a Subversion client, implemented as a Microsoft Windows shell extension, that helps programmers manage different versions of the source code for their programs. It is free software released under the GNU General Public License.

The following is a comparison of version-control software. The following tables include general and technical information on notable version control and software configuration management (SCM) software. For SCM software not suitable for source code, see Comparison of open-source configuration-management software.

OpenGrok is a source code search and cross reference engine. It helps programmers to search, cross-reference and navigate source code trees.

GNU Bazaar distributed version control system

GNU Bazaar is a distributed and client–server revision control system sponsored by Canonical.

TortoiseGit Git revision control client, implemented as a Windows shell extension and based on TortoiseSVN

TortoiseGit is a Git revision control client, implemented as a Windows shell extension and based on TortoiseSVN. It is free software released under the GNU General Public License.

Meld (software) Software for file comparison

Meld is the visual diff and merge tool of GNOME, targeted at developers. It allows users to compare two or three files or directories visually, color-coding the different lines.

References

  1. "GNU RCS". directory.fsf.org . FSF. 22 December 2015.
  2. 1 2 3 4 5 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.
  3. 1 2 3 4 Raymond, Eric. "Understanding Version-Control Systems (DRAFT)". www.catb.org. Retrieved 2017-02-13.
  4. "RCS". GNU Project. Free Software Foundation. 22 Jan 2015. Retrieved 27 June 2015.
  5. "4.3BSD - /usr/src/new/rcs/src/rcsdiff.c". Walter's Retro Computing Corner Documentation. May 19, 1986. Retrieved November 15, 2014.
  6. "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/READ_ME". February 27, 1989.
  7. "CSRG/cd2/4.3reno/usr/src/contrib/rcs/src/rcs.c". August 15, 1989.
  8. RCS 4.3 README file.
  9. 1 2 3 "Revision control concepts – Revision Control System (RCS), Concurrent Versions System (CVS) and Subversion". IT PASSION - "IT professional Blog". 2008-12-10. Retrieved 2017-02-20.
  10. Steinberg, Frank. "Revision Control Systems (RCS, CVS, Subversion, Git)". Technical University of Braunschweig . Retrieved 2017-02-20.

Notes

Further reading