Metamodeling
and its Applications
tud
The basics of CVS are quite easy to master but you can do much more with CVS. Here is a collection of a few hints and tipps we aquired during the last years.

Administrative files

The folder CVSROOT contains several files which control CVS:

.# backups of previous administrative files, created after checkin
checkoutlist contains list of files which are automatically checked out when checked into CVSROOT
commitinfo scripts to be performed before check in
config misc cvs configuration (nothing useful)
cvswrappers defines which files have to be checked in as binary
editinfo obsolete
history holds history of operations, needs to be writeable by everyone, if deleted is not created again
loginfo scripts to be performed after check in (can access log messages)
modules holds list of additional "virtual" modules which alias to other modules or contain them
notify scripts to run for watches and edits
rcsinfo defines the template files for log messages
taginfo scripts to run, when tags are applied
updatelog not part of original CVS distribution, usually holds checkout information from scripts (see below)
val-tags
verifymsg evaluate log messages

automatic checkout of (sub)trees after check in

The loginfo file usually contains a commented script which can be used for automatic checkouts

 ALL (date; cat; (sleep 2; cd /var/cvs_checkout; umask g+w; cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1

This line checks out all modules to /var/cvs_checkout and appends all information written during checkout to updatelog. The umask g+w was added by myself to circumvent group permission problems. If the default umask doesn't include write abilities for group members then other group members can't successfully check out files. The changed umask circumvents this.

set permissions on checked out files

This hint is taken from cvsbook.red-bean.com - I wasn't able to reproduce this yet.

Usually the files are checked out with the permissions of the user doing the check out. At least the executable bit can be modified. Simply go to the repository and set the x bit on the ,v -files and when they are checked out the x bit should be set.

allow people to check out modules for which they only have read access

Finer grained group control

If a repository module is shared between several users the problem arises that files created by one user may not be changeable by another because the default group of the first user does not include the second user.

Solution: Set folder g+s which "inherits" the group id to subitems when they are created.