Next: , Previous: Top, Up: Top



1 Introduction

The Project Revision Control System, prcs, is the front end to a set of tools that (like CVS) provide a way to deal with sets of files and directories as an entity, preserving coherent versions of the entire set.

Abstractly, prcs presents you (“the user”) with the abstraction of named projects that have multiple (project) versions, each of which is a set of files, arranged into a directory subtree. A project is the collection of all project versions of that project. Each project version contains one distinguished file, called the (project) version descriptor, in the top directory of the subtree, which contains a description of the files included in that particular version. For a project named P, this file has the name P.prj (and so is also called a “.prj file”). The operations provided allow you to perform the following actions:

In addition, you may add and subtract the files contained in a new project version, or move files from one subdirectory to another by editing the working copy of the .prj file before checking in the new version. See Project-Version Descriptors.

prcs keeps all checked-in project versions in a projects repository. See Projects Repository. At any given time, you fix a prevailing repository by setting the environment variable PRCS_REPOSITORY (which defaults to $HOME/PRCS), and do not explicitly mention it in any commands. In general, you should modify the projects repository only with the prcs command or other designated utilities, or the results will be unpredictable.

prcs uses the approach found in CVS (Concurrent Version System): unlike version control systems such as RCS and SCCS, prcs locks projects in the repository only while it is actually running (in order to make operations on projects atomic). One simply checks in new versions as desired; the system will warn you if others have made parallel changes to the major version of the project you are working on that may have to be merged with changes you have made.

Where prcs differs from CVS (and, indeed, other source-code control systems of the author's acquaintance) is in its attempt to provide a particularly simple model to the user. A project is a collection of files, period. Although the current implementation of prcs actually uses RCS in its implementations, none of the details of RCS are of any consequence to the user.

Acknowledgements

Prcs is somewhat unusual in that I wrote the bulk of this reference manual before implementation started. I am greatly indebted to Josh MacDonald for condensing it from vaporware into real software, and to the Berkeley PATH project and its sponsors for initially paying his way.