The original Revision Control System. RCS is a system for maintaining multiple revisions of files. It automates the storing, retrieval, logging and identification of each revision. The current version of a file, plus successive deltas to previous versions, are kept in a special revision, or RCS, file. From this, the RCS tools can recreate any revision of the file.

The RCS suite of tools consists of the following:

  • ci - checks in a file. This either creates a new RCS file, or creates a new revision and adds it to an existing RCS file.
  • co - checks out a file. This recreates the most recent revision of a file from an RCS file. Previous revisions can also be recalled.
  • ident - searchs files for RCS keywords. RCS can replace certain keywords such as "$Revision$" when recreating a file from an RCS file. The ident tool searches for these keywords in both source and binary files. For example "ident /usr/bin/rcs" will show which source files the rcs binary was compiled from.
  • rcsdiff - show differences between revisions. Shows the lines that differ between two revisions, or a checked out file and a revision.
  • rcsmerge - merge the changes between two revisions into a working file.
  • rlog - show the revision log of an RCS file. Each time a new revision is created by checking in a file, the user can attach a log message. The rlog tool extracts the revision history, as well as these log messages from the RCS file.
  • rcsclean - remove working files that are the same as the last revision. This can be used to filter out files that have been checked out, but not changed.
  • rcs - change RCS file attributes. This tool can be used to control whether strict locks are used, whether keyword substitution is turned on (bad for binary files), modify access lists, and other miscellaneous tasks.

The primary limitations of RCS are:

  • It is purely file based, with no concept of projects or directories.
  • It stores revisions on the local filesystem, with no client/server or network access.
  • It stores the revision files in the same directory (or in an RCS subdirectory) as the source files, instead of a centralized repository.
  • It handles multi-user access by either exclusive locking or no locking and manual merging.
Other products such as CVS build on top of RCS and solve these problems.

RCS was written by Walter Tichy at Purdue University, starting around 1982. Version 3 was included with BSD 4.3. Version 4 appeared around 1989, licenced under the GPL. As of 2001, Version 5.7 is the latest version.