环境:Linux

版本:svnserve, version 1.6.11

在SVN_HOME的hooks目录下新创建一个文件,其名字为pre-commit。

凯哥的SVN_HOME为:/opt/svn/kaigejava。所以对应创建文件目录如下:


svn提交的时候必须添加注释且字数大于指定数字_svn



在pre-commit文件中输入如下脚本:


#!/bin/sh

REPOS="$1"

TXN="$2"

SVNLOOK=/usr/bin/svnlook #这里根据自己实际情况填写

LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c)

if [ "$LOGMSG" -lt 10 ]; then

echo -e "\n 注释不能为空,且不能少于十个字符!提交中止.""请添加注释后,重新提交">&2

exit 1

fi


使用文本编辑器就可以打开该文件。

脚本命令介绍:

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提交的时候必须添加注释且字数大于指定数字_错误信息_02

将文件添加到SVN中:

svn提交的时候必须添加注释且字数大于指定数字_svn_03


提交到SVN中:

svn提交的时候必须添加注释且字数大于指定数字_linux_04


不添加注释或注释小于10个字符的,可以用看到错误信息如下:

svn提交的时候必须添加注释且字数大于指定数字_错误信息_05



添加注释大鱼10个字符的:

svn提交的时候必须添加注释且字数大于指定数字_错误信息_06


再次提交:

svn提交的时候必须添加注释且字数大于指定数字_错误信息_07


提交成功。完成。

需要注意第二:在创建新项目的时候,需要把该文件复制到对应姓名的hooks目录下,并赋予执行权限。

总结:

1:pre-commit文件是在SVN_HOEM下的hooks目录中

2:脚本编写时候:SVNLOOK的值要根据自己实际情况填写

3:一定要记得赋权,执行权限