Neither the authors nor their employers are responsible for any
destruction or damage caused by this package!  KEEP BACKUPS!

Please don't even think about using this interface without access to
*daily* backups.  Look at it this way: if some other elisp package
screws up, for instance, gnus, maybe you have to recreate your .newsrc
file; annonying, but not too bad.  Suppose that this thing damages or
destroys your files, which normally are important source code.  How
will you recreate those without a backup?

This works *only* with rcs version 5.5 or later.

The interface is a greatly extended version of Chris Siebenmann's
rcs-cks.el interface released some time ago.  The philosophy was to
make it easy for fairly naive Unix and RCS users to still create and
use multiple branches and merges.  Extensions are:

1) Multiple-file commands with rcs-do-many.

2) Branches for individual users automatically created and used for
   each user who wants the functionality.  See variable rcs-use-user-branch.

3) Variations within each user branch; users can maintain multiple
   branches for multiple projects on the same files.  See function
   rcs-make-user-variation, variable rcs-list-all-items.  To do
   this the source codes for each variation must be kept in different
   directories.

4) Menu control of branches, variations, and merges.  See function
   rcs-interactive-variation-menu.

5) Merges done with the emerge.el program by Dale R. Worley,
   drw@math.mit.edu.

6) Checkin of all checked-out files in a directory.  See function
   rcs-ci-checked-out.

7) Don't force checkin if a file hasn't changed.
   (6 and 7 allow a user to checkout all files in a directory for a
   project, modify just some, then automatically checkin the changed
   ones).

Recommendations:  We bind just 3 additional keys:

(define-key global-map "\C-c\C-f" 'rcs-co-file)
(define-key global-map "\C-c\C-s" 'rcs-ci-buffer)
(define-key global-map "\C-ck" 'rcs-revert-buffer)

Actually, you can bind C-x C-f to rcs-co-file, because if rcs-co-file
is run on a non-RCS file, it just does a find-file.

Also, here's how we handle multiple users on the same source:

For program A, we create a main directory and put the source code and
RCS subdirectory there; call it .../main_A/A.c .../main_A/RCS/A.c,v

But, we don't edit those source codes!  Instead each user creates
their own analog of the main directory structure:  .../user_A/A.c
However, instead of creating an RCS subdirectory, the user links back
to the real one:  ln -s .../main_A/RCS
This way there's just one copy of the ,v files, but user copies of the
source code.  This interface handles copying versions around.

Please send bug reports to:

rfinch@water.ca.gov
