GNU RCS

The Revision Control System (RCS) manages multiple revisions of files. RCS automates the storing, retrieval, logging, identification, and merging of revisions. RCS is useful for text that is revised frequently, including source code, programs, documentation, graphics, papers, and form letters.

RCS was first developed by Walter F. Tichy at Purdue University in the early 1980s -- paper: RCS: A System for Version Control (1991) (troff, PostScript, PDF). See also the Purdue RCS Homepage.

RCS design is an improvement from its predecessor Source Code Control System (SCCS) (see GNU CSSC). The improvements include an easier user interface and improved storage of versions for faster retrieval. RCS improves performance by storing an entire copy of the most recent version and then stores reverse differences (called "deltas"). RCS uses GNU Diffutils to find the differences between versions.

Download / News

(HTTPSHTTPFTPmirrors)

Latest release: 5.10.1 (2022-02-02)

  • distribution now .tar.lz only

    If you have GNU tar, you can use "tar xf" and it will DTRT. If not, you can use "lzip -dc TARBALL | tar xf -" to unpack it.

  • bug fix: handle unexpected byte in edit script (rlog)

    Previously, a comma-v file w/ an unexpected (non-'a', non-'d') dispatch byte in the edit script would cause rlog to segfault. Now, rlog displays an error message w/ diagnostic and aborts.

    The segfault is a regression brought by RCS 5.8 (2011-08-30). RCS 5.7 (1995-06-16) would abort correctly, but used a different diagnostic message -- "bad diff output line" -- that did not include line number information.

    Thus, because of the new (line number) info, new test t303 fails for RCS 5.7 as well. Test number 3xx is for rlog functionality and not a regression, even though the problem has regression nature, too.

  • portability fix: use ‘SIGSTKSZ’ more gingerly

    Some versions of this <sys/sigstack.h> element cannot be used in the CONDITION portion of a preprocessor-conditional (‘#if’) construct. No problem, we found another way.

  • misc portability tweaks via gnulib

    As usual, GNU gnulib provides the right amount of buffer between the Ideal and the Real worlds. Thanks, gnulib.

  • bootstrap/maintenance tools

    upgraded:

     GNU gnulib 2022-01-27 07:00:41
     GNU texinfo 6.8
     GNU Automake 1.16.5
     GNU Autoconf 2.71

    as before:

     (none)

(unadorned)

Documentation

Documentation for RCS is available online, as is documentation for most GNU software. You may also find information about RCS by running info rcs or by looking at /usr/share/doc/rcs/, /usr/local/share/doc/rcs/, or similar directories on your system.

Mailing Lists

RCS has the following mailing lists:

  • bug-rcs is for reporting bugs.
  • help-rcs is for feature requests and user support.

Announcements about RCS and most other GNU software are made on the info-gnu mailing list (archive).

Security reports that should not be made immediately public can be sent directly to the maintainer. If there is no response to an urgent issue, you can escalate to the general security mailing list for advice.

Getting involved

Development of RCS, and GNU in general, is a volunteer effort, and you can contribute. For information, please read How to help GNU. If you'd like to get involved, it's a good idea to join the discussion mailing list (see above).

For development sources, issue trackers, and other information, please see the RCS project page at savannah.gnu.org.

RCS is currently maintained by Thien-Thi Nguyen (tip jar). Please use the mailing lists for contact.

Licensing

RCS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.