Cyclic RCS page
RCS (the Revision Control System) is a version control system. It offers a basic level of functionality (for example, it operates on one file at a time). As such, we'd generally recommend a more powerful system, such as CVS, even for beginners, but we have written this page because there seems to be continued interest in RCS (for example, people might be used to RCS or have scripts which rely on the RCS command line interface).
RCS has been widely ported and reimplemented. The free version of RCS is often called GNU RCS to distinguish it from the non-free implementations.
CVS and RCS
CVS and RCS both store version histories in a file format known as RCS files. This format is documented in the rcsfile(5) manpage in the RCS distribution, and the file doc/RCSFILES in a current CVS distribution. A large number of tools have the ability to at least import this format.
CVS 1.9 and earlier were also implemented by calling RCS programs, but this is no longer true as of CVS 1.10.
Of course, implementation details aside, CVS and RCS share a common heritage. The fact that the output format from the "cvs log" command is identical to the output format from the RCS "rlog" command is not a coincidence, for example.
RCS and the Year 2000
The year in an RCS file is two digits if the year is before 2000 or four digits thereafter. We believe RCS has implemented this behavior starting with approximately RCS version 5.1.
Mailing lists and newsgroups
The newsgroup for RCS (and other version control systems) is comp.software.config-mgmt.
Binary files and RCS
RCS can handle binary files, but it can be a bit tricky to set up. If building from sources, follow the instructions in the RCS source distribution very carefully. Some RCS executable distributions will handle binary files correctly, but I'm not sure of the exact status of all of them. Once you have it set up, consult the RCS documentation (quick summary: make sure to specify -kb).How do I tell what version of RCS I have?
Run the "co -V" command. Recent versions of GNU RCS will print a version number, for example "RCS version 5.6.6 (beta)". If you get "co error: unknown option: -V", you probably have a version of GNU RCS older than about 5.6 or so (I wasn't able to verify the exact cutoff). If you get some other message, you may have a package other than GNU RCS (GNU RCS is not the only program with a "co" command).Downloading RCS
I suppose we need to make an explicit disclaimer that although we have tried to indicate our experiences with the RCS distributions listed below, they are not supported by Cyclic.
There are various source and executable distributions of RCS at http://download.cyclic.com/pub/rcs/.
That site includes executables for RCS for Windows 95/NT. This is the version that we have been using most at Cyclic and have had good luck with. It can be identified by the fact that the ZIP file, rcs57nt.zip, contains only the RCS executables, not even a README file or anything. There is no documentation here, but the RCS 5.7 manpages from the RCS 5.7 source distribution apply (the manpages are also printed in the Practical book mentioned below).
There is a DOS port of RCS 5.7 at http://rfs63.berkeley.edu/users/elf/rcsdos/ (this one can be identified by the fact that it contains a RCSDOS.LSM file dated 15 Apr 1996 and listing Marc Singer as one of the authors. We had some trouble with this version when we tried it).
There is another version for DOS by Kai Uwe Rommel; see rcs57pc1.zip and rcs57pc2.zip at http://www.leo.org/pub/comp/os/os2/leo/gnu/devtools/index.html or purdue.edu (the latter site also contains the sources, rcs57src.zip). This one is dated 29 Jan 1997; in addition to RCS it contains the "rcsfront" package (which is not widely known), which consists of programs like cii.exe. We have heard even less about this version.
Another port to Windows is from Reed Kotler. I'm not sure whether this is the same as one of the above ports or yet another one.
For the Macintosh, there is a port by Tim Endres and Matthias Neeracher. See the file RCS_23Feb94.sit.bin at ftp://sunsite.cnlab-switch.ch/software/platform/macos/src/mpw_c/.
RCS Standards
There are no formal standards specifying the RCS command line or file format, but there are written specifications.
The RCS file format is described in the rcsfile(5) manpage from the RCS distribution, and the doc/RCSFILES file in the CVS source distribution.
The RCS command line is described in the manpages from the RCS distribution.
For more information
Some books with significant RCS content are:
- Programming with GNU Software is an introduction to the GNU software development tools running on UNIX. Chapter 8 introduces RCS and also discusses a few of the more advanced features of RCS. The CD-ROM which accompanies the book includes a copy of RCS, including executables for six unix platforms.
- Practical Software Configuration Management by Tim Mikkelsen and Suzanne Pherigo, 1997, gets individuals and small teams started with configuration management. The book covers basic RCS usage and also discusses the larger issues that are illustrated by the RCS examples. The book also contains a printed copy of the RCS documentation ("manpages"). The CD-ROM which accompanies the book includes a copy of RCS, including binaries for Windows 95/NT.
- A Practical Guide to Linux is a large book covering many aspects of linux. The chapter on Programming Tools contains a section which introduces RCS usage (pages 559-567). Part II of the book includes a reference manual for the most common RCS commands and options.
![[Cyclic Home]](cyclichome.gif)
![[ Valid XHTML 1.0! ]](/branding/w3c-valid-xhtml10-44x16.png)
![[ Valid CSS! ]](/branding/w3c-valid-css-44x16.png)
