1.cd /opt/svn/test //test为代码仓库
2.mv /opt/svn/test/hooks/pre-commit.tmpl pre-commit //将pre-commit.tmpl重命名为pre-commit
3.vim pre-commit
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/opt/subversion/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" > /dev/null || exit 1
# Exit on all errors.
set -e
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
"$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN \
"$REPOS"/hooks/commit-access-control.cfg
# All checks passed, so allow the commit.
exit 0
上面这个是修改前的,下面是修改后的
REPOS="$1"
TXN="$2"
# Make sure that the log message contains some text.
SVNLOOK=/opt/subversion/bin/svnlook
LOGMSG=`$SVNLOOK log -t $TXN $REPOS | wc -m` //定义个变量,注意这里不是单引号
#$SVNLOOK log -t "$TXN" "$REPOS" | \ //把这一行和下面的一行注释掉
# grep "[a-zA-Z0-9]" > /dev/null || exit 1
echo $LOGMSG > /opt/svn/aaa.txt //为了测试变量用的,查看$LOGMSG有没有值,最后要注释掉
if [ "$LOGMSG" -lt 5 ] //不能少于5个字符
then
echo "\nEmpty log message not allowed. Commit aborted!" " 1>&2 exit 1
fi
# Exit on all errors.
#set -e
# 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
4.保存pre-commit文件,加可执行权限chmod +x pre-commit
5.错误解决:
svnlook:Expected FS format '2';found format'4'
解决方法:
检查pre-commit脚本中,命令SVNLOOK指定的目录是否是在/subversion/bin/ 下面.