svnhook---在提交前检查用户是否填入需要的日志
一:svnhook机制
svn的hook机制,跟其他很多类似的工具一样,hook机制的本身就是在某个具体的时机所触发的内容,类似于事件驱动的回调。
举个简单的例子,我们使用svn commit的时候如果希望对日志的信息进行判断,如果日志中没有包含指定的信息,提示相关的错误信息,不允许提交。这样的场景,就是hook机制起作用的最为常见的情形之一
二:svn的hook模板
我们可以在svn的路劲下看到这些模板文件
不过上面的文件均以tmpl结尾,而这样是不起作用的,在Unix/Linux下,删除tmpl的后缀才能起作用
三:创建一个脚本检测是否有填入提交信息,并且附上链接
- 先复制一个脚本,去掉tmpl后缀,并且给上执行权限
mv pre-commit.tmpl pre-commit chmod +x pre-commit
-
以下是脚本内容,实现了两个功能,1个是提交日志如果输入的字符少于4个汉字,不允许提交,第二个是如果提交日志没有填入指定的url,也不允许提交
#!/bin/sh REPOS="$1" TXN="$2" # 确保提交的时候必须填写提交备注 SVNLOOK=/usr/bin/svnlook # 获取提交日志内容 LOGMSG=$($SVNLOOK log -t $TXN $REPOS) # 计算汉字数 NUM_CHINESE=$(echo "$LOGMSG" | grep -o '[\u4e00-\u9fff]' | wc -l) # 检查汉字数量是否少于4 if [ "$NUM_CHINESE" -lt 4 ]; then echo "至少输入4个汉字" >&2 exit 1 fi # 指定需要检查的链接 URL="http://example.com/" # 检查提交日志是否包含指定字母 if ! echo "$LOGMSG" | grep -q "$URL"; then echo "请带上需求单或者bug链接" >&2 exit 1 fi exit 0