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 |
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.
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.
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.