Template:Short description Template:Lead too short {{#invoke:Infobox|infobox}}Template:Template other{{#invoke:Check for unknown parameters | check | showblankpositional=1 | unknown = Template:Main other | preview = Page using Template:Infobox software with unknown parameter "_VALUE_"|ignoreblank=y | AsOf | author | background | bodystyle | caption | collapsetext | collapsible | developer | discontinued | engine | engines | genre | included with | language | language count | language footnote | latest preview date | latest preview version | latest release date | latest release version | latest_preview_date | latest_preview_version | latest_release_date | latest_release_version | licence | license | logo | logo alt | logo caption | logo upright | logo size | logo title | logo_alt | logo_caption | logo_upright | logo_size | logo_title | middleware | module | name | operating system | operating_system | other_names | platform | programming language | programming_language | released | replaced_by | replaces | repo | screenshot | screenshot alt | screenshot upright | screenshot size | screenshot title | screenshot_alt | screenshot_upright | screenshot_size | screenshot_title | service_name | size | standard | title | ver layout | website | qid }}Template:Main other 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.<ref name=":1" />

HistoryEdit

DevelopmentEdit

RCS was first released in 1982<ref name=":1">Template:Cite journal</ref> 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).<ref name=":0">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> RCS is currently maintained by the GNU Project.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

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.<ref name=":1"/>

Legal and licensingEdit

Initially (through version 3, which was distributed in 4.3BSD), its license prohibited redistribution without written permission from Walter Tichy:<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

Template:Quote

A READ_ME file accompanied some versions of RCS which further restricted distribution, e.g., in 4.3BSD-Reno.<ref>Template:Cite FTP</ref>

Ca. 1989, the RCS license was altered to something similar to the contemporary BSD licenses, as seen by comments in the source code.<ref>Template:Cite FTP</ref>

Template:Quote

RCS 4.3, released 26 July 1990, was distributed "under license by the Free Software Foundation", under the terms of the GPL.<ref>RCS 4.3 README file.</ref>Template:Full citation needed

OpenBSD provides a different implementation called OpenRCS, which is BSD-licensed.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

BehaviorEdit

Mode of operationEdit

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")<ref>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</ref> but it lacks support for atomic commit across those files. Although it provides branching, the version syntax is cumbersome.Template:Citation needed Instead of using branches, many teams just use the built-in locking mechanism and work on a single head branch.<ref name=":1" />

UsageEdit

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.<ref name=":1" />

AdvantagesEdit

  • Simple structure and easy to work with <ref name=":2">{{#invoke:citation/CS1|citation

|CitationClass=web }}</ref>

  • Revision saving is not dependent on a central repository <ref name=":2" />

DisadvantagesEdit

  • There is little security, in the sense that the version history can be edited by the users.<ref name=":2" />
  • Only one user can work on a file at a time.<ref>{{#invoke:citation/CS1|citation

|CitationClass=web }}</ref>

NotesEdit

Template:Notelist

See alsoEdit

ReferencesEdit

Template:Reflist Notes Template:Refbegin

Template:Refend

Further readingEdit

External linksEdit

Template:Portal

Template:Version control software

Template:Authority control Template:Use dmy dates