Svn钩子脚本简介及生产应用举例

钩子脚本的具体写法就是操作系统中的shell脚本,可根据自己的svn所在的操作系统和shell程序进行相应的开发

默认情况下,钩子的子目录中包含各种版本库钩子模板

[root@centos/]# tree /application/svndata/sadoc/hooks/

/application/svndata/sadoc/hooks/

├──post-commit.tmpl

├── post-lock.tmpl

├──post-revprop-change.tmpl

├──post-unlock.tmpl

├── pre-commit.tmpl

├── pre-lock.tmpl

├──pre-revprop-change.tmpl

├── pre-unlock.tmpl

└──start-commit.tmpl

钩子脚本就是被某些版本库事件触发的程序,如创建新版本或修改未被版本控制的属性。每个钩子都能掌管足够的信息来了解发生了什么事件,操作对象是什么以及触发事件用户的账号,根据钩子的输出或者返回状态,钩子程序能够以某种方式控制该动作继续执行、停止或者挂起

当前 Subversion 提 供了 5 种可以安装的 hook :


生产应用场景

开发人员提交的代码自动触发操作,如自动备份内容同步自动执行sonar扫描fortify安全扫描、对上传文件类型检查控制等操作,下面的例子为

【SVN Hook 实现服务器端代码自动更新】

原来的做法是客户端提交代码之后,再去服务器端项目中 svn up 一下来更新代码,让服务器端的项目更新到最新版本。可以编写一个 post-commit 钩子脚本来实现服务器端代码的自动更新,它在 SVN 每次 svn commit 之后运行


注意事项:

  1. subversion 以 正在存取代码库的过程的所属用户来执行 hook 。因此,请确保这个用户具有足够的权限,可以访问 hook 可以直接或间接访问的资源,一般可以设置 chmod 700 post-commit

  2. 写钩子脚本时要尽可能定义环境变量,主要是用过的命令的路径。因为SVN考虑安全问题,不会调用系统环境变量,所以即使发现手动执行post-commit没有问题,但svn自动执行也可能会无法执行

评论

© 走过岁月...... | Powered by LOFTER