svnhook---在提交前检查用户是否填入需要的日志

一:svnhook机制

svn的hook机制,跟其他很多类似的工具一样,hook机制的本身就是在某个具体的时机所触发的内容,类似于事件驱动的回调。

举个简单的例子,我们使用svn commit的时候如果希望对日志的信息进行判断,如果日志中没有包含指定的信息,提示相关的错误信息,不允许提交。这样的场景,就是hook机制起作用的最为常见的情形之一

 

二:svn的hook模板

 

我们可以在svn的路劲下看到这些模板文件

不过上面的文件均以tmpl结尾,而这样是不起作用的,在Unix/Linux下,删除tmpl的后缀才能起作用

 

三:创建一个脚本检测是否有填入提交信息,并且附上链接

  1. 先复制一个脚本,去掉tmpl后缀,并且给上执行权限
    mv pre-commit.tmpl  pre-commit
     
    chmod +x pre-commit

     


  2. 以下是脚本内容,实现了两个功能,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 

 

posted @ 2024-08-20 17:18  Hiro-D  阅读(5)  评论(0编辑  收藏  举报