环境:Linux
版本:svnserve, version 1.6.11
在SVN_HOME的hooks目录下新创建一个文件,其名字为pre-commit。
凯哥的SVN_HOME为:/opt/svn/kaigejava。所以对应创建文件目录如下:
在pre-commit文件中输入如下脚本:
#!/bin/shREPOS="$1"TXN="$2"SVNLOOK=/usr/bin/svnlook #这里根据自己实际情况填写LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c)if [ "$LOGMSG" -lt 10 ]; thenecho -e "\n 注释不能为空,且不能少于十个字符!提交中止.""请添加注释后,重新提交">&2exit 1fi |
---|
使用文本编辑器就可以打开该文件。
脚本命令介绍:
SVNLOOK:指定自己的svnlook所在的目录位置
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c):
$SVNLOOK log -t "$TXN" "$REPOS":获取svn提交的日志记录
grep "[a-zA-Z0-9]":这个正则意思是大小写字母及数字
if [ "$LOGMSG" -lt 10 ]; then:判断 如果字符小于10 。
-lt:使用的是转移后的小于号
-eq:等于号
-gt:大于号
echo -e "\n 注释不能为空,且不能少于十个字符!提交中止.""请添加注释后,重新提交">&2:当if条件不成立的时候,显示错误信息
需要注意:在使用 echo -e 的时候显示错误信息的时候,必须重定向到指定的str中。如本例中"请添加注释后,重新提交">&2。
最重要的:
给给文件赋权。不然没法执行的。最简单的,添加执行权限:chmod +x pre-commit。
进行测试:
通过svn客户端连接后。新建文件:
将文件添加到SVN中:
提交到SVN中:
不添加注释或注释小于10个字符的,可以用看到错误信息如下:
添加注释大鱼10个字符的:
再次提交:
提交成功。完成。
需要注意第二:在创建新项目的时候,需要把该文件复制到对应姓名的hooks目录下,并赋予执行权限。
总结:
1:pre-commit文件是在SVN_HOEM下的hooks目录中
2:脚本编写时候:SVNLOOK的值要根据自己实际情况填写
3:一定要记得赋权,执行权限