面对Git的强势,SVN的翻身的希望越来越渺茫。作为开源版本控制里面的佼佼者,SVN也曾经也伴随了一波人的成长。而现在的市场,越来越多的人已经找不到使用SVN的理由了。以下SVN hook的各个脚本的使用也是几年前所作的笔记,送给仍旧坚守使用svn的人,希望它还有点用处。
![早年的SVN的hook解释文档,祭奠渐渐被遗忘的SVN](http://p2.ttnews.xyz/loading.gif)
SVN hook脚本位于每个仓库的的hooks目录下面,进入此目录,可以看到目录内已经存在各个Hook脚本的模板,使用某个hook时,只需要修改对应的文件名与文件内容即可。
模板名称如下:
post-commit.tmpl post-revprop-change.tmpl pre-commit.tmpl pre-revprop-change.tmpl start-commit.tmpl post-lock.tmpl post-unlock.tmpl pre-lock.tmpl pre-unlock.tmpl
下面对每个钩子的功用 做一个说明!
start-commit
执行时间: 事务创建之前
用处: 通常用来检查用户权限等
参数:
$1: 版本库路径
$2: 提交的用户名
返回值:
0: 成功
非0: 失败,打印错误输出
pre-commit
执行时间: 事务完成,但未提交
用处: 对代码检查等
参数:
$1: 版本库路径
$2: 事务名称
返回值:
0: 成功
非0: 终止提交,回滚版本
post-commit
执行时间: 事务完成,版本提交成功
用处: 版本成功提醒,如发邮件或备份版本库
参数:
$1: 版本库路径
$2: 提交成功之后生成的版本号
返回值:
0: 成功
非0: 失败,打印失败信息
pre-revprop-change
执行时间: 修改版本属性之前
用处: 如修改已经提交的注释信息等
参数:
$1: 版本库路径
$2: 需要修改属性的修定版本
$3: 认证用户
$4: 被修改的属性名称
$5: 变更描述:A (添加的),D (删除的)或M (修改的)
返回值:
0: 成功
非0: 失败,打印失败信息
注意: 此钩子默认是拒绝所有属性修改的,所以如果需要修改属性,则需要此hook返回0值
post-revprop-change
执行时间: 修改版本属性之后执行
用处: 修改版本属性成功提醒,如发邮件
参数:
$1: 版本库路径
$2: 需要修改属性的修定版本
$3: 认证用户
$4: 被修改的属性名称
$5: 变更描述:A (添加的),D (删除的)或M (修改的)
返回值:
0: 成功
非0: 失败,打印失败信息
关于lock的钩子,在日常使用中比较少见,所以便不再详细说明,如有需要,可访问svn 的中文文档,里面有详细的介绍:http://www.svn.org.cn/1060.html
閱讀更多 感悟運維 的文章