SVN的Hooks功能--强制添加注释和容许修改注释

所谓hooks,能够相似理解Linux内核Netfilter框架的hook点和hook函数的概念。当用户在维护代码的过程当中,其执行的相关动做正好触发了相关hook点,就会去执行对应hook点的脚本。

SVN版本库目录下有hooks目录,里面有不少.tmpl的文件。这些文件用以定义某些动做触发的 hook脚本。默认状态下,这些脚本的后缀都是.tmpl,是没有起做用的。至关于Netfilter的各个hook点没有注册hook函数。因此,当用户执行相关维护代码动做的时候,也不会触发hook脚本。所以,在默认状态下,用户提交代码的时候,不用添加注释信息也会被版本看所接受。并且,用户想修改本身的注释时,会获得服务器拒绝的相关提示信息(本人搭建的svn server是这样的默认情形)。服务器

1. 强制添加注释信息
用户提交代码的动做,对应的是pre-commit。所以,能够修改pre-commit.tmpl文件。
文件名修改成pre-commit, Windows下能够修改成pre-commit.bat。这样可让系统知道该文件时可执行文件。
将文件中如下几行内容注释掉, 前面添加'#'框架

$SVNLOOK
log -t "$TXN" "$REPOS" | 
grep "[a-zA-Z0-9]" > /dev/null || exit 1 
commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || 
exit 1

并在此位置添加以下几行:svn

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c` 
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符(数字和字母),您可自定义 
then 
   echo -e "nLog message cann't be empty! you must input more than 5 
chars as comment!." 1>&2 
   exit 1 
fi

保存,退出。
给pre-commit添加可执行权限
chmod +x pre-commit
通过该设置,用户提交代码时注释信息小于5个字符将会获得警告,而且代码不会被提交到版本。函数

2. 容许用户修改注释信息spa

用户修改注释信息的动做,对应的是pre-revprop-change. 将hooks/下pre-revprop-change.tmpl
改名为pre-revprop-change。一般该文件包含的功能就是容许用户修改注释信息,所以只要将该文件加上可执行权限便可:
#chmod +x pre-revprop-changecode

默认文件内容以下:server

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1
相关文章
相关标签/搜索