钩子脚本的具体写法就是操作系统中的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 之后运行
注意事项:
subversion 以 正在存取代码库的过程的所属用户来执行 hook 。因此,请确保这个用户具有足够的权限,可以访问 hook 可以直接或间接访问的资源,一般可以设置 chmod 700 post-commit
写钩子脚本时要尽可能定义环境变量,主要是用过的命令的路径。因为SVN考虑安全问题,不会调用系统环境变量,所以即使发现手动执行post-commit没有问题,但svn自动执行也可能会无法执行
© 走过岁月...... | Powered by LOFTER