The RCS MINI-HOWTO
Robert Kieslingv1.4, 14 August 1997
This document covers basic installation and usage of RCS, the GNU Revision Control System, under Linux. It also covers the installation of the
RCS, the revision control system, is a suite of programs that tracks changes in text files and controls shared access to files in work group situations. It is generally used to maintain source code modules. It lends itself to tracking revisions of document files as well.
RCS was written by Walter F. Tichy and Paul Eggert. The latest version which has been ported to Linux is RCS Version 5.7. There is also a semi-official, threaded version available. Much of the information in this HOWTO is taken from the RCS man pages.
RCS includes the
rcs(1) program, which controls RCS
archive file attributes,
which check files in and out of RCS archives,
ident(1), which searches RCS archives by keyword
rcsclean(1), a program to clean up files
that are not being worked on or haven't changed,
rcsdiff(1), which runs
diff(1) to compare
rcsmerge(1), which merges two RCS
branches into a single working file, and
which prints RCS log messages.
Files archived by RCS may be text of any format, or binary if the
diff program used to generate change files handles
8-bit data. Files may optionally include identification strings to
aid in tracking by
ident(1). RCS uses the utilities
diff3(3) to generate the
change files between revisions. A RCS archive consists of the
initial revision of a file, which is version 1.1, and a series of
change files, one for each revision. Each time a file is checked
out of an archive with
co(1), edited, and checked back
into the archive with
ci(1), the version number is
increased, for example, to 1.2, 1.3, 1.4, and so on for successive
The archives themselves commonly reside in a
subdirectory, although RCS has other options for archive storage.
For an overview of RCS, see the
generate the context diff files between revisions. The diff
utilities suite needs to be installed on your system, and when you
install RCS, the software will check for its presence.
Precompiled diffutils binaries are available at:
ftp://sunsite.unc.edu/pub/Linux/utils/text/diffutils-2.6.bin.ELF.tar.gzand its mirror sites. If you need to compile
diff(1), et al., from source, it is located at:
ftp://prep.ai.mit.edu/pub/gnu/diffutils-2.7.tar.gzand its mirror sites.
You will also need to have the ELF libraries installed on your system if you want to install pre-built binaries. See the ELF-HOWTO for further details.
Get the source distribution of RCS Version 5.7. It is available at
ftp://sunsite.unc.edu/pub/Linux/devel/vc/rcs-5.7.src.tar.gzand its mirrors. After you have unpacked the archive into your source tree, you need to configure RCS for your system. This is done via the
configurescript in the source directory, which you need to execute first. This will generate a
Makefileand the appropriate
conf.shfor your system. You can then type
make installwhich will build the binaries. At some point you may need to
suto root so the binaries can be installed in the correct directories.
rcs(1) does the work or creating archives
and modifying their attributes. A summary of
options may be found in the
rcs(1) manual page.
The easiest way to create an archive is first to
RCS in the current directory, then initialize the archive
rcs -i name_of_work_filecommand. This creates and archive with the name
./RCS/name_of_work_file,vand requests a text message describing the archive, but it does not deposit any revisions in the archive. You can turn on or off strict archive locking with the commands
rcs -L name_of_work_fileand
rcs -U name_of_work_filerespectively. There are other options for controlling access to the archive, setting its format, and setting revision numbers, which are covered in the
co(1) are the commands used to
check files in and out of their RCS archives. The
ci(1) command may also be used to a check a file both
in and out of an archive. In their simplest forms,
co(1) take only the name of the
co name_of_work_fileThe command form
ci -l name_of_work_filechecks in the file with locking enabled, and
co -l name_of_work_fileis performed automatically. That is,
ci -lchecks the file out again with locking enabled.
ci -u name_of_work_filechecks the file into the archive, and checks it out again with locking disabled. In all cases, the user is prompted for a log message.
ci(1) will also create a RCS archive if one does not
If you don't specify a revision,
ci(1) increments the
version number of the last revision locked in the archive, and
appends the revised working file to it. If you specify a revision
on an existing branch, it must be higher than the existing revision
ci(1) will also create a new branch if you
specify the revision of a branch which does not exist. See the
co(1) man pages for details.
co(1) have various options for
interactive and non-interactive use. Again, see the
co(1) man pages for details.
rlog(1) program provides information about the
archive file and the logs of each revision stored in it. A command
rlog work_file_namewill print the version history of the file, each revision's creation date and
useridsof author and the person who locked the file. You can specify archive attributes and revision parameters to view.
co(1) maintains a list of keywords of the RCS database
which are expanded when the working file is checked out. The
$Id$ in a document will expand to a string
which contains the file name, revision number, the date checked
out, the author, the revision status, and the locker, if any.
Including the keyword
$Log$ will expand to the
document's revision history log.
These and other keywords may be used as search criteria of the RCS
archive. See the
ident(1) man page for further
The Version Control facility of
emacs(1) works as a
front end to RCS. This information applies specifically to Version
19.34 of GNU Emacs, which is provided with the major Linux
distributions. When editing a file with
is registered with RCS, the command
vc-toggle-read-only (bound to
C-x C-q by
default) will check a file in to the emacs's Version Control, and
then into RCS. Emacs will open a buffer where you can type a log
message to be included in the RCS log. When you are finished typing
a log entry, type
C-c C-c to terminate your input and
proceed with the check-in process.
If you have selected strict locking for the file with RCS, you must
re-lock the file for editing by
emacs(1). You can
check the file out for emacs's Version Control with the command
% in buffer-menu mode.
For more information, see the GNU Emacs Manual and the Emacs info pages.