检查svn 提交时log格式的脚本pre-commit
pre-commit文件放到 SVN repository下hooks目录里
需要设为可执行
Linux环境下的
#!/bin/sh
REPOS="$1"
TXN="$2"
TYPE="$3"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
if test -z "$TYPE" ; then
TYPE="-t"
fi
#$SVNLOOK log -t "$TXN" "$REPOS" | \
# grep "[a-zA-Z0-9]" > /dev/null || exit 1
look() {
$SVNLOOK "$@" "$TYPE" "$TXN" "$REPOS"
}
LOGMSG=`look log`
if echo $LOGMSG | grep '.' > /dev/null; then
NOT_EMPTY=1
else
echo "Message must be filled">&2
exit -2
fi
#echo $REPOS >&2
#look changed>&2
#exit 1
IN_BRANCH=0
#echo $REPOS | grep -iE "^/var/www/svn/test/branches"
CHANGES=`look changed`
#echo $CHANGES >&2
for f in $CHANGES ;do
#echo $f>&2
echo $f | grep -iE "^branches/br130609" > /dev/null
if [ $? -eq 0 ]; then
IN_BRANCH=1
fi
done
#echo $IN_BRANCH>&2
#exit 1
if [ $IN_BRANCH -eq 1 ]; then
echo $LOGMSG | grep -iE "^(new|add|improve|refactor|ci|fix|modify)\s*:\s*[0-9\.]+[mh]\s*:.+" >/dev/null
CHECKRE1=$?
echo $LOGMSG | grep -iE "^(bug|bugfix)\s*:\s*[0-9\.][mh]\s*:\s*((BUMBLEBEE-[0-9]+)+,*)+\s*:.*" >/dev/null
CHECKRE2=$?
if [ $CHECKRE1 -ne 0 ] && [ $CHECKRE2 -ne 0 ]; then
echo " Wrong format, please write according to:http://wiki.cntnsoft.int/pages/viewpage.action?pageId=20643842 ">&2
exit -3
fi
fi
if look changed | grep '^A ' | sed -r 's#^A +##' | grep -iE '\.(ncb|opt|plg|suo|aps|bsc|idb|obj|pcc|pch|pdb|sbr|exe|tmp|ilk|o|so|a|class|zip|log)$|~$|^(Debug|Release|Debug_Ts|Release_Ts|Thumbs\.db)$|(^\.)' 1>&2 ; then
echo "Including not permitted file: ncb|opt|plg|suo|aps|bsc|idb|obj|pcc|pch|pdb|sbr|exe|tmp|ilk|o|so|a|class|zip|log">&2
exit 1
fi
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
#commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
# All checks passed, so allow the commit.
exit 0