$Id: HOWTO,v 1.1 2005/04/07 01:07:14 sopwith Exp $ This file includes some quick references for how to work with the CVS server on devserv. 1. How to protect a project from public commit ---------------------------------------------- Regardless of the reason (super secret or paranoia), if you want to protect a CVS module from having everybody in the devel or devqa groups be able to commit changes to it, these are the simple steps: - check out the CVSROOT directory (if you are reading this, you have already done that) - edit the 'commitinfo' file to add your project to the list of projects protected by acls. For example, add a new line that reads (without the readability indent in this example) mymodule $CVSROOT/CVSROOT/acls You can protect only a specific subdirectory of that module by using something like: mymodule/mydir $CVSROOT/CVSROOT/acls - open up the 'avail' file and lock down your project. By default all projects are wide open. So, at the end of the file add the access control lines. For example (again, ignore the readability indent): unavail | | mymodule avail | username | mymodule avail | otheruser1,otheruser2 | mymodule/subdir, mymodule/somefile The first line locks all access from the "mymodule" module. The second line gives "username" access to everything in it. "username" can be a single user or a comma-separated list. The third line enables additional access to "otheruser1" and "otheruser2" to a subdirectory and a specific file. Those users will be able to commit changes to files only if those files are under the subdir directory or if the file is "somefile". These details are also documented in the comment section of the "avail" file. There are also examples in there that are handy. - commit everything and try it out. There are TWO files you need to commit: one is the "commitinfo" file and the other is the "avail" file. Please note, this will not restrict anyone's ability to check out stuff - it only intercepts commits. 2. How to get mailed when commits are done ------------------------------------------ Edit the "loginfo" file and follow the examples already in there. The syncmail script has only one important/useful option: --nodiff Do not build and mail out the diffs This option is particularly useful when you have a directory that contains binary files and you can do without a rather large meaningless diff between different versions of binary files. The general usage is: (ignore readability indentation) ^module $CVSROOT/CVSROOT/syncmail [--nodiff] %{sVv} username1 username2 You want the carrot(^) at the beginning of the module because otherwise CVS will match that directory name against every commit and sometimes modules have directory names which are rather common. You also want to pay attention to the user list - it is space separated. If all email addresses are @redhat.com you can omit that and get a shorter line length.