简述

由于安全原因,Subversion版本库在一个空环境中执行钩子脚本-->就是没有任何环境变量,甚至没有$PATH或%PATH%。注意必须在你的钩子中设置好环境变量或为你的程序指定好绝对路径。

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

[root@localhost hooks]# ll /svn/HLink/hooks/
总用量 36
-rw-r--r-- 1 root root 1977 12月 19 2016 post-commit.tmpl
-rw-r--r-- 1 root root 1638 12月 19 2016 post-lock.tmpl
-rw-r--r-- 1 root root 2289 12月 19 2016 post-revprop-change.tmpl
-rw-r--r-- 1 root root 1567 12月 19 2016 post-unlock.tmpl
-rw-r--r-- 1 root root 3426 12月 19 2016 pre-commit.tmpl
-rw-r--r-- 1 root root 2410 12月 19 2016 pre-lock.tmpl
-rw-r--r-- 1 root root 2786 12月 19 2016 pre-revprop-change.tmpl
-rw-r--r-- 1 root root 2100 12月 19 2016 pre-unlock.tmpl
-rw-r--r-- 1 root root 2780 12月 19 2016 start-commit.tmpl

start-commit  事务创建之前。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 试图提交的用户名。

hook 的返回值:非 0 则 终止。

一 般用途:判断用户是否有权限进行提交 操作。

pre-commit  事务完成,但未提交。

-         参 数 1 , 代码库路径。

-         参 数 2 , 事务名。

hook 的返回值:非 0 则 终止提交,操作回滚。

一 般用途:对提交内容进行检查。如要求 提交必须填写提交信息。

post-commit  事务提交完毕,新的修订版被 创建。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 刚创建的修订版号。

hook 的返回值被忽 略。

一 般用途:发送邮件通知,或备份代码 库。

pre-revprop-change  修改修订版属性(如提交时提 供的信息 message )之前。

由于修订版属性一旦修改就会 永久的丢失,除非安装这个事件的 hook ,subversion 的 客户端不允许远程修改修订版属性。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 要修改的修订版号。

-         参 数 3 , 操作用户名。

-         要 修改的属性。

hook 的返回值:非 0 则 终止。

一 般用途:保存修订版属性的改变记录。

post-revprop-change  修订版属性值被修改之后。

如果没有安装 pre-revprop-change 的 hook , 这个事件的 hook 不会被执行。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 要修改的修订版号。

-         参 数 3 , 操作用户名。

-         要 修改的属性。

hook 的返回值被忽 略。

一 般用途:发送邮件

实践

因svn仓库在服务器2上, 服务器3是测试服务器, 钩子要远程执行更新脚本.所以先做ssh免密认证

服务器2上 生成秘钥对   ssh-keygen   , ssh-copy-id 把公钥发给服务器3

非默认端口时:  ssh-copy-id    -i   /root/.ssh/id_rsa.pub  '-p 224 root@111.198.29.223'

[root@localhost ]# ssh-keygen  #回车
[root@localhost ]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.3

编辑钩子脚本

[root@localhost hooks]# pwd
/svn/hcloud/hooks

[root@localhost hooks]# vim post-commit

#!/bin/bash
export LANG=en_US.UTF-8REPOS="$1"
TXN="$2"datelog=`date +%Y%m%d`
datetime=`date +%Y-%m-%d-%T-%A`
# Make sure that the log message contains some text./bin/echo $REPOS $TXN $datetime >>/tmp/svn-hcloud-$datelog.log || exit 1#  ssh 192.168.0.3 "sh /srv/uphcloud.sh"ssh 192.168.0.3 "nohup /srv/uphcloud.sh  >test.log 2>&1 &" 

# Check that the author of this commit has the rights to perform# the commit on the files and directories being modified.# commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 # All checks passed, so allow the commit.exit 0

[root@local ~]# cat /srv/uphcloud.sh
#!/bin/bashtype svn
if [ $? != 0 ];thenecho "need install subversion first"exit
ficd /srv[ ! -e /srv/hcloud ]&& mkdir -p /srv/hcloud;cd /srv/hcloudecho `pwd` >>/srv/herror.log
echo `date` >>/srv/herror.log# BScloud echo "hcloud" >>/srv/herror.log
#if [ ! -e /srv/hcloud ]; then
if [ ! -e /srv/hcloud/web ]; then/usr/bin/svn co --no-auth-cache svn://192.168.0.2/hcloud/web --username svn账号 --password 密码 2>&1 >>/srv/herror.log
else#cd /srv/hcloud/cd /srv/hcloud/web/usr/bin/svn update --no-auth-cache --username svn账号 --password 密码 2>&1 >>/srv/herror.logcd /srv
ficp -uraf /srv/hcloud/web/* /data/web/hcloud/web/
cd /data/web/
chown -R nginx:nginx hcloud/
chmod -R 777 /data/web/hcloud/web/web_code/smarty/templates_c

转载于:https://www.cnblogs.com/mingetty/p/9790287.html

SVN钩子hooks使用相关推荐

  1. svn修改提交路径_使用SVN钩子强制提交日志和限制提交文件类型

    Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能.所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有 ...

  2. svn 覆盖更新_使用SVN钩子强制提交日志和限制提交文件类型

    Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能.所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有 ...

  3. LNMP环境SVN钩子脚本的使用

    在做版本的时候,需要SVN做一些自动化的事情,比如提交前自动更新:提交一些文件后关联着提交另一些.所以需要写一点自动化脚本. 什么是SVN钩子 官方说法: 钩子是通过版本库事件触发,例如新版本的创建或 ...

  4. 钉钉自定义机器人配合SVN钩子事件进行消息的推送实践

    目前很多公司还是使用SVN(TortoiseSVN)进行版本控制,使用简单,适合管理一般项目.协同办公软件目前钉钉比较成熟,阿里也一直在宣传推广,这两年公司也在使用,主要用于信息的沟通,其它的绩效.考 ...

  5. 使用SVN钩子运行PHP更新服务器代码的注意事项

    想通过本地提交代码到SVN服务器,同时同步测试服务器的代码 使用SVN钩子,运行服务器的php文件 代码如下: <?php header("Content-Type: text/htm ...

  6. SVN 使用hooks 自动更新到远程的web目录下

    为什么80%的码农都做不了架构师?>>>    环境: A机器192.168.1.10  作为SVN的服务端     (环境 apache svn ssh) 环境: B机器 192. ...

  7. SVN 钩子操作-同步更新web目录

    一个简单的钩子演示:也可以网上搜索其他高级的 本次想要达到的功能是:每次用户commit 到仓库后,仓库的钩子会自动把程序又更新的www/的web发布目录 1.现在web目录下创建一个test.com ...

  8. Svn 笔记—— Hooks

    pre-commit 钩子功能: [root@Da hooks]# cat /application/svndata/sadoc/hooks/pre-commit #!/bin/bash #Check ...

  9. SVN钩子HOOK设置自动备份,服务本地可以看到所有更新内容。

    可以实现SVN本机备份.或者其他备份.关键是可以保持有一份最新的SVN文件可以查看. 实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实 ...

最新文章

  1. 揭秘华为AI一站式开发平台,3步构建一个AI模型 | 华为昇腾师资培训沙龙西安场...
  2. 腾讯ARC、华中科大联合提出QueryInst,开启基于Query的实例分割新思路
  3. Android程序员一年工作经验能重复用十年?高效学习很重要!
  4. mysql之子查询作业
  5. [Google Guava] 2.1-不可变集合
  6. 5.js模式-职责链模式
  7. k8s集群部署项目_JAVA项目(制作镜像)---K8S_Google工作笔记0060
  8. JavaMail回复
  9. 设计糟糕的 RESTful API 就是在浪费时间!
  10. 美团正押注无人车?没错,这是外卖大战的第三阶段
  11. oracle里面的锁,基于oracle中锁的深入理解
  12. 如何破解一个正版软件只有三十天的方法
  13. SecureCRT 安装与破解教程
  14. 作为空降领导,该如何做?
  15. idea取消英语拼音提示绿色波浪线
  16. [从 0 开始写一个操作系统] 三、Bootloader 的实现
  17. KEIL5 AC6 出现printf告警
  18. R语言绘制沈阳地铁线路图
  19. The SwiftProgramming Language读书笔记第26页
  20. 使用nginx配置图片代理

热门文章

  1. 剑网三谜题终于揭开,药宗四系开合得当,有输出有治疗
  2. Chrome浏览器手动添加Cookie的方法
  3. Python小游戏(消消乐)
  4. Spring 的优点
  5. 数据库面试题【六、Sql的优化】
  6. oracle 启动监听提示 :The listener supports no services
  7. codeforces 1100E-Andrew and Taxi
  8. 浏览器登陆时纪录自动登陆时限
  9. 中国移动基于ARM/x86服务器的Ceph性能对比
  10. 让女朋友能懂的网络技术篇之动态代理