Home

FAQ

Download

Documentation

Feedback

Project Page

This project is being hosted by SourceForge.net.

This is their logo:
SourceForge.net Logo

CVS Cop

CVS Cop is a server-side CVS policy enforcement program, launched by the CVS administrative files (commitinfo, loginfo, taginfo, and verifymsg). It can deny CVS actions, emit warning messages to the CVS client command line, or launch external scripts, based on regular expression matches in its configured rule set.

A simple configuration example

CVS Cop is configured through what may be described as a somewhat undisciplined XML file:

<cvscop>
    <ruleset>

        <match field="mode">
            /^commitinfo$/
            <match field="cvsuser" bool="and">
                !/^larry$/i
                !/^moe$/i
                !/^curly$/i
                <deny>
                    Only larry, moe, or curly may commit!
                </deny>
            </match>
        </match>

    </ruleset>
</cvscop>
        

Briefly, CVS Cop reads tags within <ruleset> from the outside in, stopping if a <match> fails. So in this case, if CVS Cop is running in commitinfo mode and the user name is not one of larry, moe, or curly, the <deny> rule is reached, which sends a message and causes the CVS commit to fail.

The one odd thing about the regular expressions above is the bang (!) at the beginning, which indicates a logical NOT on the match.

The main reason CVS Cop was written in the first place was to allow reasonably complex rule sets to be maintained. Other features have since been added out of necessity, like spawning external programs.