码迷,mamicode.com
首页 > 其他好文 > 详细

svn hooks的使用demo

时间:2014-07-19 17:19:15      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   

svn提供了Hooks Script。所谓钩子实际上市一种时间触发机制,是指当系统执行到某个特殊的事件时,触发我们预定义的动作,可以让我们在某些特定状态发生的时候做我们想做的事。

进入一个生成的SubVersion的代码仓库,在目录下面有一个Hooks的目录,进入该目录,正常情况下,你应该看到的是下图:

bubuko.com,布布扣

.tmpl都是每个hooks的模板文件,其实都是文本文件,使用vi打开后,可以看到里面的注释和详细的说明,这些是我们可以使用的第一手的帮助文件。

如上图svn服务端有9种钩子,分别是:

A.关于锁定的2种
a1.pre-lock
a2.post-lock
B.关于解锁的2种
b1.pre-unlock
b2.post-unlock
C.关于提交的3种
c1.start-commit
c2.pre-commit
c3.post-commit

顺序是:c1---->c2----->c3

D.关于属性的2种
d1.pre-revprop-change
d2.post-revprop-change

比如这里我们想强制svn的提交者必须输入对应的log,我们就需要pre-commit这个hooks。

pre-commit:当Svn收到了用户提交上来的文件,在最终存入Repository前,会调用Pre-commit,同时传两个参数进去,一个就是提交的Repository的路径(服务器端的实际路径),第二个就是TXN-Name. Transaction Name,这个是用于标识此提交进程的事务ID.

接下里重命名pre-commit.tmpl为pre-commit,并同时给该文件可执行权限(很重要,我就是这里忘记了,排错了好久,不然脚本执行后会显示不知所云的错误信息:svn: Commit blocked by pre-commit hook (exit code 255) with no output。)

修改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 5(要求的log长度,依实际需要修改) ];
then
echo -e "nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi
# All checks passed, so allow the commit.
exit 0

不用重启svn,再提交代码时,就必须按要求写注释了。

Tips:

1,配置完成之后一定要给对应的*-commit加上可执行权限,否则会出现如图所示错误。

bubuko.com,布布扣,

2,使用post-commit的时候要慎重,因为整个操作不能保证原子性。

svn hooks的使用demo,布布扣,bubuko.com

svn hooks的使用demo

标签:style   blog   http   color   使用   os   

原文地址:http://www.cnblogs.com/babybluevino/p/3852500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!