In a CVS repository, the commitinfo file under the CVSROOT that defines programs to execute whenever `cvs commit' is about to execute.
So lets create a trigger bash script called validateCommit.sh that get branches parameters to be validated.
#!/bin/bash
if [ -f CVS/Tag ]; then
tag=`cat CVS/Tag`
else
tag=THEAD
fi
for branch in "$@"
do
if [ "$tag" == "T$branch" ]; then
echo Cannot commit to $branch
exit 1
fi
done
echo Commit OK
exit 0
We can place this script in any folder, for example /cvs/scripts/
Then just append a line at the bottom of the CVSROOT/commitinfo of a repository:
ALL /cvs/scripts/validateCommit.sh branch1 branch2
We could make a script to append/remove branches from that list on multiple repositories at the same time.
With GIT or SVN, they also provide similar pre-commit hook feature so we can do the same thing.
No comments:
Post a Comment