## ## OSSP shiela - CVS Access Control and Logging Facility ## Copyright (c) 2000-2006 Ralf S. Engelschall ## Copyright (c) 2000-2006 The OSSP Project ## ## This file is part of OSSP shiela, an access control and logging ## facility for Concurrent Versions System (CVS) repositories ## which can be found at http://www.ossp.org/pkg/tool/shiela/. ## ## This program is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License ## as published by the Free Software Foundation; either version ## 2.0 of the License, or (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this file; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ## USA, or contact Ralf S. Engelschall . ## ## shiela-install.pod: install manual page (syntax: POD) ## =pod =head1 NAME B - OSSP shiela installation utility =head1 VERSION B =head1 DESCRIPTION B is an access control and logging facility for use with the I (CVS). Read shiela(1) for more details about B itself. This B program is a small utility intended to help in adding B to an existing CVS repository for testing or production purposes. =head1 INSTALLATION: MANUALLY B can be installed and activated in a CVS repository either manually or via the B program. The manual steps would be: =over 4 =item B<1.> make sure that you are using CVS version 1.12.6 or higher. Older versions are no longer supported due to the new IC hooking (C) which is a mandatory configuration for B. =item B<2.> checkout a working copy of the C module from your repository. =item B<3.> make sure the file C<$CVSROOT/CVSROOT/config> contains the directive ``C''. =item B<4.> create the files C<$CVSROOT/CVSROOT/shiela>, C<$CVSROOT/CVSROOT/shiela.cfg> and C<$CVSROOT/CVSROOT/shiela.msg> in this directory and list these three files in C<$CVSROOT/CVSROOT/checkoutlist> (so CVS automatically checks them out). =item B<5.> add to C<$CVSROOT/CVSROOT/rcsinfo> (the hook for providing log messages): ``C''. =item B<6.> add to C<$CVSROOT/CVSROOT/taginfo> (the hook for checking tag operations): ``C''. =item B<7.> add to C<$CVSROOT/CVSROOT/importinfo> (the hook for checking import operations): ``C''. This assumes that you are using a CVS version with RSE patches applied (see below). If you use a stock CVS version, you have to skip this step and live with the fact that `C' commands cannot be access controlled by B (because then this hook does not exists at all). =item B<8.> add to C<$CVSROOT/CVSROOT/admininfo> (the hook for checking admin operations): ``C''. This requires that you are using a CVS version with RSE patches applied (see below). If you use a stock CVS version, you have to skip this step and life with the fact that `C' commands cannot be access controlled by B (because then this hook does not exists at all). =item B<9.> add to C<$CVSROOT/CVSROOT/commitinfo> (the hook for checking commit operations): ``C''. =item B<10.> add to C<$CVSROOT/CVSROOT/verifymsg> (the hook for post-processing log messages): ``C''. =item B<11.> add to C<$CVSROOT/CVSROOT/loginfo> (the hook for performing logging): ``C''. This requires that you use a CVS version with RSE patches applied (see below). If you use a stock CVS version, use ``C'' instead and live with the fact that B's run-time efficiency is slightly decreased and branch recognition might be less correct (because B has to determine details the hard way which CVS already would know easily). =item B<12.> edit C<$CVSROOT/CVSROOT/shiela.cfg> to fit your repository and project situation. For details, see the description under B in shiela(1). =item B<13.> finally commit all modifications at once. =back =head1 INSTALLATION: AUTOMATICALLY For convenience reasons one can alternatively use the interactive B utility, which perform the above steps automatically and especially creates initial C and C files. Just run C and answer the questions. For convenience reasons (while testing) one can also override the default value of a question by using C on the B command line. For instance, ``C'' sets the default path for the question about the CVS repository to C. Additionally one can specify C which runs B non-interactively. =head1 CVS INTERNAL PROCESSING The administrative files in C<$CVSROOT/CVSROOT/> are consulted by CVS internally in dependency of the used F command. For your reference, here are the processing steps CVS performs and into which B hooks into: =over 1 =item On "C": 1. CVSROOT/config (general configuration) 2. CVSROOT/modules (determine module names) 3. CVSROOT/cvswrappers (file handling) 4. CVSROOT/history (logging of the commit step) =item On "C": 1. CVSROOT/config (general configuration) 2. CVSROOT/modules (determine module names) 3. CVSROOT/commitinfo (access control) 4. CVSROOT/rcsinfo (log message template) 5. CVSROOT/editinfo (run the log message editor) 6. CVSROOT/verifymsg (evaluate/adjust log message after editing) 7. CVSROOT/cvswrappers (file handling) 8. CVSROOT/loginfo (extra logging after commit) 9. CVSROOT/history (logging of the commit step) =item On "C": 1. CVSROOT/config (general configuration) 2. CVSROOT/modules (determine module names) 3. CVSROOT/importinfo (access control) 4. CVSROOT/rcsinfo (log message template) 5. CVSROOT/editinfo (run the log message editor) 6. CVSROOT/verifymsg (evaluate/adjust log message after editing) 7. CVSROOT/cvswrappers (file handling) 8. CVSROOT/loginfo (extra logging after commit) 9. CVSROOT/history (logging of the commit step) =item On "C" (CVS with RSE patches only): 1. CVSROOT/config (general configuration) 2. CVSROOT/modules (determine module names) 3. CVSROOT/taginfo (access control and tag evaluation) 4. CVSROOT/history (logging of the tag step) =item On "C" (CVS with RSE patches only): 1. CVSROOT/config (general configuration) 2. CVSROOT/modules (determine module names) 3. CVSROOT/admininfo (access control) 4. CVSROOT/history (logging of the admin step) =back =head1 CVS WITH RSE PATCHES APPLIED The stock CVS vendor version you can find on http://www.cvshome.org/. Although B works fine with just this version, it unfortunately lacks some important features which make B's processing less strong. For instance, the stock CVS does not allow B to apply access control to the "C" and "C" commands. Hence Ralf S. Engelschall extended CVS with those features (and more) and maintains a patch set in the "cvs" package of his B project (http://www.openpkg.org/). You can find the latest patch set under http://cvs.openpkg.org/openpkg-src/cvs/cvs.patches.rse =head1 SEE ALSO cvs(1), shiela(1). =head1 AUTHOR Ralf S. Engelschall rse@engelschall.com www.engelschall.com =cut