Subversion提供了强大的hooks脚本功能,主要用于控制commit操作前,后的执行动作,以及lock,unlock操作前,后的执行动作;默认在版本仓库下的hooks目录下存在着这些脚本的模板文件;  本节中将介绍下hooks目录下post-commit和pre-commit脚本的使用,其他脚本的功能不同,但执行过程类似;一般pre-commit脚本用来检查用户提交前的条件,例如用来检查用户是否对提交的内容进行了注释等;post-commit脚本用来执行commit动作完成后,测试服务器的自动更新等操作;下面就来演示下这两个功能的实现:

1:pre-commit脚本,实现功能:用户提交操作时必须填写注释,且大于5个字符,否则提交将会失败。

  1. root@java-203-svn:~# cat /usr/local/subversion/repos/sa/hooks/pre-commit
  2. #!/bin/sh
  3. #function:verify user's svn commit comment must more than 5 characters,otherwise commit will failure
  4. #author:lw.yang
  5. #version: v-1.0
  6. #modify_time: 2011-03-22
  7. REPOS="$1"
  8. TXN="$2"
  9. SVNLOOK=/usr/local/subversion/bin/svnlook
  10. LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
  11. if [ "$LOGMSG" -lt 5 ];then
  12. echo -e "Log message cann't be empty! you must input more than 5 chars as comment!" 1>&2
  13. exit 1
  14. fi
  15. exit 0
  16. root@java-203-svn:~# chmod +x  /usr/local/subversion/repos/sa/hooks/pre-commit

测试:

2:post-commit脚本,实现功能:用户commit操作完成后,测试服务器(本例中为另外一台linux服务器,ip地址192.168.50.7)自动更新用户提交的内容

  1. root@java-203-svn:~# cat /usr/local/subversion/repos/sa/hooks/post-commit
  2. #!/bin/sh
  3. #funciton:automatic update svn on remote server
  4. #author:lw.yang
  5. #version: v-1.0
  6. #modify_time: 2011-03-22
  7. IP=192.168.50.7
  8. DIR=/svn_project/sa
  9. DATE=$(date)
  10. /usr/bin/ssh root@$IP   /usr/bin/svn update $DIR
  11. if [ "$?" -eq "0" ];then
  12. echo "svn update successful on $DATE" >> /var/log/svn_sa_update.log
  13. exit 0
  14. else
  15. echo "svn update failure on $DATE"   >> /var/log/svn_sa_update.log
  16. fi
  1. 测试:先checkout一份最新的代码
  2. [root@rhel5 ~]# mkdir -p /svn_project
  3. [root@rhel5 ~]# cd /svn_project/
  4. [root@rhel5 svn_project]# svn co http://svn.***.com/sa  --username=yangliangwei --password=123456
  5. A    sa/branchs
  6. A    sa/trunk
  7. A    sa/trunk/apache_2.2.16.sh
  8. A    sa/trunk/install-pureftp.sh
  9. A    sa/trunk/mysql_5.1.36.sh
  10. A    sa/trunk/svn_co_ex_rsync.sh
  11. A    sa/trunk/ks.cfg
  12. A    sa/tags
  13. 迁出后的trunk目录文件如下
  14. [root@rhel5 trunk]# ls  /svn_project/sa/trunk/
  15. apache_2.2.16.sh  install-pureftp.sh  mysql_5.1.36.sh  svn_co_ex_rsync.sh ks.cfg

  1. 出现上面的错误,看上去是权限的问题,发现手动运行可以更新成功,基本上可以确定是subversion用户权限的问题,
  2. 这里的svn是以apache方式运行,所以就是daemon用户的权限问题
  3. root@java-203-svn:~# /usr/local/subversion/repos/sa/hooks/post-commit
  4. A    /svn_project/sa/trunk/post.txt
  5. Updated to revision 9.
  6. [root@rhel5 trunk]# ls  /svn_project/sa/trunk/
  7. apache_2.2.16.sh  install-pureftp.sh  ks.cfg  mysql_5.1.36.sh  post.txt  svn_co_ex_rsync.sh
  8. 修改daemon用户的家目录和登录shell配置,并建立公钥信任
  9. root@java-203-svn:~# ps -ef |grep httpd
  10. root     11934     1  0  2010 ?        00:00:01 /usr/local/apache2/bin/httpd -k start
  11. daemon   19722 11934  0 15:30 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
  12. root@java-203-svn:~# grep  'daemon' /etc/passwd
  13. daemon:x:2:2:daemon:/home/daemon:/bin/bash
  14. root@java-203-svn:~# mkdir /home/daemon
  15. root@java-203-svn:~# cp -rvp /etc/skel/.bash* /home/daemon/
  16. root@java-203-svn:~# chown -R daemon.daemon /home/daemon/
  17. root@java-203-svn:~# su - daemon
  18. [daemon@java-203-svn ~]$ ssh-keygen
  19. The key fingerprint is:
  20. 3a:a2:b3:13:a2:9d:ae:00:00:88:4a:06:28:20:8e:fc daemon@java-203-svn
  21. [daemon@java-203-svn ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.50.7
  22. 28
  23. root@192.168.50.7's password:
  24. Now try logging into the machine, with "ssh 'root@192.168.50.7'", and check in:
  25. .ssh/authorized_keys
  26. to make sure we haven't added extra keys that you weren't expecting.
  27. [daemon@java-203-svn ~]$ date && ssh root@192.168.50.7 date
  28. Tue Mar 22 16:03:15 CST 2011
  29. Tue Mar 22 16:03:15 CST 2011

发现自动更新成功,OK,大功告成,收工,哈哈…

[root@rhel5 trunk]# ls  /svn_project/sa/trunk/
apache_2.2.16.sh  install-pureftp.sh  ks.cfg  mysql_5.1.36.sh  svn_co_ex_rsync.sh

本文转自斩月博客51CTO博客,原文链接http://blog.51cto.com/ylw6006/522712如需转载请自行联系原作者

ylw6006

Subversion hooks脚本配置演示及排错相关推荐

  1. 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )

    文章目录 一.交叉编译 Shell 脚本参考 二.NDK r16b 版本配置 三.libjpeg-turbo 交叉编译 Shell 脚本 四.执行 libjpeg-turbo 交叉编译 Shell 脚 ...

  2. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )

    文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...

  3. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  4. subversion安装与配置备忘录

    subversion安装与配置备忘录 前两天给公司安subversion,总是出问题,今天总结一下整个过程,以备将来遗忘.下边是我对在网上的一些文章的添加和补充基础上写的. 我是安装windows版本 ...

  5. linux subversion 根目录检出,经验总结:详解Linux下Subversion的安装配置记录 下

    上节介绍额Linux下Subversion的安装问题,本节介绍Linux下Subversion配置问题,你可以和Windows下Subversion的安装配置做一个对比,你就会发现在这两种操作系统中S ...

  6. 5、Oracle备份(oracle备份脚本配置)

    1.1 Oracle数据库备份 1.1.1 链接Oracle介质管理库 请在数据库节点上操作. [oracle@db01/usr/openv/netbackup/bin]$ ./oracle_link ...

  7. 版本管理器subversion的简单配置以及和apache的结合使用

    linux下subversion+apache的配置我在网上看过很多关于subversion配置的blog,但是按照其 上操作并不能成功配置,也讲的不是很清楚.在此向大家推荐<使用Subvers ...

  8. linux pppd ip up 脚本,pppd拨号脚本配置

    ppp拨号脚本配置 摘要 本文主要介绍了嵌入式Linux系统下使用pppd 2.4.4来进行PPP拨号需要使用的脚本是如何配置的,配置项的含义,同时也说明了如何来配置参数,实现ppp拨号上网. 一.问 ...

  9. Linux磁盘空间爆满怎么办?定时文件清理脚本配置实现

    在Linux系统上跑任务会遇到系统磁盘空间爆满的情况,表现出来的现象是程序运行报错,或执行缓慢.记录下Linux磁盘空间占用的查看方法和文件清理脚本定时触发配置的实现. 一.Linux磁盘空间占用分析 ...

最新文章

  1. 谈谈对于企业级系统架构的理解(zz)
  2. 【论文解读】ICDM2020 | 挖掘异构图中的层级结构
  3. bartender的安全策略不允许指定的用户执行此操作_Linux sudo 被曝提权漏洞,任意用户均能以 root 身份运行命令...
  4. micro_macro
  5. 回调函数 线程_从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2...
  6. Python爬虫--- 1.2 BS4库的安装与使用
  7. 笔记-多项式相关操作
  8. 经过两个月的面试,我给你整理了这些面试考点(Java版)
  9. HTML标签(持续更新)
  10. 截取数组中的第i个元素,并返回截取后的结果
  11. pycharm和python一样吗_PyCharm中Directory与Python package的区别
  12. 2021筠连中学高考成绩查询,四川筠连中学2021年排名
  13. java做后台移动端QQ第三方登录
  14. 惠普m1216硒鼓清零步骤_hpm1213nf清零
  15. 【Axure原型分享】短视频APP原型模板
  16. 利用HTML完成登陆界面设计
  17. 云南省计算机文字录入考试题,计算机文字录入处理员高级试题A
  18. Spring依赖注入和简单demo
  19. WHOIS查询检索,域名信息查询工具软件
  20. java哨兵模式_哨兵模式详解

热门文章

  1. java Windows7 下环境变量设置
  2. 12.HTML编辑器(CKEditor、CKFinder集成)
  3. 《.Net框架程序设计》读书笔记 之 结构和索引器
  4. ubuntu20.04 中ifconfig无ens33
  5. arm b bl 地址无关码_ARM_异常和中断
  6. Python编程语言基础入门教程
  7. 简单介绍CentOS6升级glibc操作步骤
  8. 单片机开发项目全局变量太多怎么管理?
  9. [NC15748]旅游 树形dp基础
  10. html页面sql注入,再谈SQL注入入侵动网SQL版-ASP TO HTML WITH TEMPLATE3