Finding RCS Repositories

by <Aaron Hawley>.

Overview

The following article is concerned with the following about RCS repositories:

After this explanation, work will conclude with crafting a solution for converting backwards (in the technological positivist-sense) a CVS repository to an RCS repository.

Definition

An RCS repository is a set of files whose revisions are being maintained by RCS. There exist two types of RCS repositories. An RCS repository could simply be one directory containing a number of files and a single RCS subdirectory holding all the respective RCS files. The RCS files could be in the directory with their working files and need not necessarily be in an "RCS" subdirectory, but the latter is traditionally the case.

Another variety of RCS repository would be a nested tree of directories containing files with an "RCS" subdirectory located at each directory. Again an "RCS" subdirectory need not be neccessary, but is the typical situation.

Acquiring Example Repositories

Well-known examples of RCS repositories are not typically distributed or published on the Internet. This is contrasted with RCS's close descendant, CVS, which is the source repository software used by software projects--and other tasks--made accessible over the Internet, with some making their CVS repositories (rather than just access to revisions (snapshots) of the repository) available for anonymous download. CVS's notoriety on the Internet is from having implemented the client-server model in its design providing revision control interactions over a network. This has spawned many CVS repositories being network-accessible and even World Wide Web accessible. CVS, as designed, has also successfully replaced GNU RCS as the dominant revision control software system of choice for software developers.

The development of GNU RCS is believed to be still held in an RCS repository. For those doing research with RCS, These repositories are likely being held by Purdue University or the Free Software Foundation.

If one could gain access to the entire CVS repository of some well-known software project, conversion to RCS should be possible. The Linux kernel publishes its entire CVS repository tree available for download:

ftp://ftp.kernel.org/pub/scm/linux/kernel/bkcvs/

More information on using Rsync and CVS to retrieve kernel source

After acquiring a CVS repository, conversion to RCS would require at a minimum writing the first cvs2rcs command.

Such a command would have to reverse CVS's design change from "RCS" subdirectories to subdirectories named "RCS". The "CVS" subdirectories contain roughly the same contents as an "RCS" subdirectory, with CVS files being marginally compatible with RCS. There is no point in keeping the CVS repository from functioning, by removing the CVS directories. So instead, symbolic links (soft links) could be created. To accomplish this with a CVS repository, consider running the following find command (accomplished with GNU findutils):

find . -type d -name CVS -print0 |xargs -r -0 -i bash -i -c '(cd {}/.. && ln -s RCS CVS)' \;

The above starts from the current directory (".") and finds (with find(1)) every subdirectory named "CVS". The paths to these directories are sent to the xargs (using "null names" with the aid of the -print0 and -0 options) command which for each path runs an interactive shell command that changes directory to the CVS directory's parent and creates a link to "CVS" called "RCS".

The next step to this conversoin is verifying the CVS files (which are generally composed of the same syntax as RCS files---with some subtle yet critical differences) are usable by the RCS utilities. This issue will be investigated in the future.

Related Links

Thread on the CVS mailing list for users (cvs-info) concerning converting a CVS repository to RCS

Site maintained by Aaron Hawley
$Id: finding-repositories.html,v 1.4 2005-04-06 02:15:14-04 ashawley Exp $

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover Text being "A free book about free software", and Back-Cover Texts being "You have freedom to copy and modify this book".