不知道SVN的深度用户同学有没有以下烦恼(尤其是当作为一个SVN仓库管理员的时候):
·如何指定一部分同学对指定的分支有提交权限
·大家提交log不规范的时候如何通过自定义的正则规范仓库用户的提交log
·想维护仓库的时候如何在指定时间段限制所有人的提交
·········
以上的需求都是可以利用SVN的钩子进行二次开发,所谓的钩子(hooks),就是实现在特定事件发生之前或者之后自动执行事先定义好的脚本代码来实现某些功能。
基本逻辑:
利用SVN这种机制,我们就可以在SVN提交的时候触发hooks来拦截用户提交的相关数据,然后就可以通过对拦截的数据处理实现SVN的持续集成方案。
SVN服务端常用的hooks主要有start-commit, pre-commit, post-commit。我们这里主要用到pre-commit脚本(SVN提交前触发的脚本)和post-commit脚本(SVN提交后触发的脚本)来拦截SVN提交信息
首先从pre-commit脚本开始:
先在pre-commit通过SVNLOOK命令获取(SVNLOOK相关链接http://svnbook.red-bean.com/ )提交的信息包括用户名、提交版本号、提交log、变更文件名、还有一个就是仓库的唯一标识符即UUID:
SCRIPT="python "$CUR_DIR"/hooks.py pre_commit "
AUTHOR=$($SVNLOOK autho