User Tools

Site Tools


rcs

This is an old revision of the document!


RCS — A System for Version Control

Intro and Background:

RCS was first released in 1982 by Walter Tichy at Purdue University making it one of the earliest version control systems (VCS) used for software development. Unlike modern VCS which are designed for distributed, concurrent development, RCS uses a centralized code repository where files are singularly checked in/out. Although largely supplanted RCS is still useful for small personal projects and is still natively included in the NetBSD operating system which SDF largely runs on. RCS is still actively maintained as a GNU Project at https://www.gnu.org/software/rcs/ .

Why use RCS today?

Although largely supplanted by distributed systems like Git and Mercurial, RCS is still surprisingly useful for small personal projects as well as local scripts and configuration files. In many ways RCS is easier to use with only a handful of commands to memorize, each with a short list of options that lend themselves to aliasing or script incorporation.

Basic RCS usage:

There are several commands that come with RCS but the following are likely most useful:

  • ci(1) - RCS file check-in
  • co(1) - RCS file check-out
  • rlog(1) - RCS change log
  • rcsdiff(1) - RCS diff(1) generator

The rcs(1) command is also useful, sort of a multi-tool that duplicates some of the functionality of the above commands as well as extending them, i.e. deleting a range of revisions, editing informational text in the log, changing default locking modes, etc.

RCS Setup

Not much preparation is needed to get started managing file revisions with RCS. While not mandatory it is highly recommended that a RCS sub-directory be created in each working directory where, if present, RCS will store the “”deltas“” – special files of the form fubar,v – that store the differences (deltas) between revisions of a file under RCS management. If the RCS sub-directory is not present RCS simply stores those delta files in the working directory.

Quick Start

The rcsintro(1) manpage covers much of the basics of RCS; below is a quick tour:

  • create a working directory & RCS sub-dir: $ mkdir -p ~/rcs_fun/RCS
  • change to working dir & create a file: $ cd ~/rcs_fun ; echo 'RCS is awesome!' > fubar
  • make initial commit of test file: $ ci -u fubar # enter description; end w/ “.” on newline
  • check file back out for further edits: $ co -l fubar && echo 'this file is fubar' » fubar
  • commit new revision of file: $ ci -u fubar # enter decription of edit; end w/ “.” on newline

The rlog(1) and rcsdiff(1) commands can be used to view the log of changes and differences between revisions respectively.

While a comprehensive tour of all RCS can do is beyond the scope of this introductory tutorial, the basics can be grasped fairly easily and are perhaps best conveyed via an illustrative RCS Sample Session.

RCS Quirks

  • no space allowed between options and arguments, i.e. use $ co -r1.3 not $ co -r 1.3
  • delta files (fubar,v) end up in the working directory if no ../RCS directory is present
  • lock files when you check them out, unlock them when you check them in
  • don't use -r by itself with the ci(1) command – it's a reset option

Documentation:

Aside from the man(1) and info(1) pages, Tichy's original 1985 paper1) still provides an good introduction to using RCS. For more in-depth coverage the following may prove helpful:

Misc:

How about a graphical RCS browser2) for Windows and Linux?

rcs.1741186638.txt.gz · Last modified: 2025/03/05 14:57 by zilog