Prerequisites

   o perl (tested with 5.6.1nb9 and 5.8.1)

Installation Instructions for Restricted CVS

   1)  Edit src/Makefile and change the CVSROOT variable so that it points
       to the location of your CVS repo.  Change the CVSGROUP variable to
       the symbolic name of your cvs group.

   2)  Type `make' in the src directory.  Then do a `make install' as root.
       This installs two binaries in your /usr/bin: cvssh and cvswrap.

       NOTE: Steps 1 and 2 are to be done on the repo server.  The following
             steps can be done on another local machine (modulo step 10).

   3)  Check out the CVSROOT module of your repo in a scratch directory.
       Make sure that there are no name clashes between the files in your
       current CVSROOT and the files in this distribution's CVSROOT.  If
       there are, go ahead and contact me so I can move things around.

       NOTE: The CVSROOT module should be checked out via cvs over ssh
             instead of via a local (or NFS) repo.  Cvs does not seem to
             rebuild the administrative database when committing to a
             local repo.  You can force cvs over ssh by setting the
             environment variable CVS_RSH to ssh and using
             user@host:/path/to/repo instead of /path/to/repo as your
             CVSROOT.

   4)  Copy the five files access, avail, cfg.pm, commitcheck and cvs_acls.pl
       from the CVSROOT directory in the distribution to the checked out
       CVSROOT module.

   5)  Edit cfg.pm, changing the value of $CVSGROUP to the symbolic name of
       your cvs group.

   6)  Add the following line to the end of commitinfo:
       `ALL			$CVSROOT/CVSROOT/commitcheck'

   7)  Edit the access file.  Add the username of each person that should
       have access to the repo.  The format of this file is a single username
       per line.

   8)  Edit the avail file.  Instructions are included in the provided stub
       file.

   9)  Add access, avail, cfg.pm, commitcheck and cvs_acls.pl to the
       checkoutlist file.  Schedule them for commit by `cvs add'ing them and
       do a `cvs commit'.

   10) For each user that requires CVS access, change their shell to
       /usr/bin/cvssh on the repo server.  Remove them from the group that
       owns the cvs repo.

If Something Goes Wrong

   Hopefully the above instructions will work.  If the ACL's simply refuse
   to work, you can log into the repo server with an account that has real
   shell access and remove the commitcheck line from CVSROOT/commitinfo
   in the actual repo.

--
   David P. Reese, Jr.                                  daver at gomerbud.com
