Subversion hooks脚本配置演示及排错
Subversion提供了强大的hooks脚本功能,主要用于控制commit操作前,后的执行动作,以及lock,unlock操作前,后的执行动作;默认在版本仓库下的hooks目录下存在着这些脚本的模板文件; 本节中将介绍下hooks目录下post-commit和pre-commit脚本的使用,其他脚本的功能不同,但执行过程类似;一般pre-commit脚本用来检查用户提交前的条件,例如用来检查用户是否对提交的内容进行了注释等;post-commit脚本用来执行commit动作完成后,测试服务器的自动更新等操作;下面就来演示下这两个功能的实现:
1:pre-commit脚本,实现功能:用户提交操作时必须填写注释,且大于5个字符,否则提交将会失败。
- root@java-203-svn:~# cat /usr/local/subversion/repos/sa/hooks/pre-commit
- #!/bin/sh
- #function:verify user's svn commit comment must more than 5 characters,otherwise commit will failure
- #author:lw.yang
- #version: v-1.0
- #modify_time: 2011-03-22
- REPOS="$1"
- TXN="$2"
- SVNLOOK=/usr/local/subversion/bin/svnlook
- LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
- if [ "$LOGMSG" -lt 5 ];then
- echo -e "Log message cann't be empty! you must input more than 5 chars as comment!" 1>&2
- exit 1
- fi
- exit 0
- root@java-203-svn:~# chmod +x /usr/local/subversion/repos/sa/hooks/pre-commit
测试:
2:post-commit脚本,实现功能:用户commit操作完成后,测试服务器(本例中为另外一台linux服务器,ip地址192.168.50.7)自动更新用户提交的内容
- root@java-203-svn:~# cat /usr/local/subversion/repos/sa/hooks/post-commit
- #!/bin/sh
- #funciton:automatic update svn on remote server
- #author:lw.yang
- #version: v-1.0
- #modify_time: 2011-03-22
- IP=192.168.50.7
- DIR=/svn_project/sa
- DATE=$(date)
- /usr/bin/ssh root@$IP /usr/bin/svn update $DIR
- if [ "$?" -eq "0" ];then
- echo "svn update successful on $DATE" >> /var/log/svn_sa_update.log
- exit 0
- else
- echo "svn update failure on $DATE" >> /var/log/svn_sa_update.log
- fi
- 测试:先checkout一份最新的代码
- [root@rhel5 ~]# mkdir -p /svn_project
- [root@rhel5 ~]# cd /svn_project/
- [root@rhel5 svn_project]# svn co http://svn.***.com/sa --username=yangliangwei --password=123456
- A sa/branchs
- A sa/trunk
- A sa/trunk/apache_2.2.16.sh
- A sa/trunk/install-pureftp.sh
- A sa/trunk/mysql_5.1.36.sh
- A sa/trunk/svn_co_ex_rsync.sh
- A sa/trunk/ks.cfg
- A sa/tags
- 迁出后的trunk目录文件如下
- [root@rhel5 trunk]# ls /svn_project/sa/trunk/
- apache_2.2.16.sh install-pureftp.sh mysql_5.1.36.sh svn_co_ex_rsync.sh ks.cfg
- 出现上面的错误,看上去是权限的问题,发现手动运行可以更新成功,基本上可以确定是subversion用户权限的问题,
- 这里的svn是以apache方式运行,所以就是daemon用户的权限问题
- root@java-203-svn:~# /usr/local/subversion/repos/sa/hooks/post-commit
- A /svn_project/sa/trunk/post.txt
- Updated to revision 9.
- [root@rhel5 trunk]# ls /svn_project/sa/trunk/
- apache_2.2.16.sh install-pureftp.sh ks.cfg mysql_5.1.36.sh post.txt svn_co_ex_rsync.sh
- 修改daemon用户的家目录和登录shell配置,并建立公钥信任
- root@java-203-svn:~# ps -ef |grep httpd
- root 11934 1 0 2010 ? 00:00:01 /usr/local/apache2/bin/httpd -k start
- daemon 19722 11934 0 15:30 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
- root@java-203-svn:~# grep 'daemon' /etc/passwd
- daemon:x:2:2:daemon:/home/daemon:/bin/bash
- root@java-203-svn:~# mkdir /home/daemon
- root@java-203-svn:~# cp -rvp /etc/skel/.bash* /home/daemon/
- root@java-203-svn:~# chown -R daemon.daemon /home/daemon/
- root@java-203-svn:~# su - daemon
- [daemon@java-203-svn ~]$ ssh-keygen
- The key fingerprint is:
- 3a:a2:b3:13:a2:9d:ae:00:00:88:4a:06:28:20:8e:fc daemon@java-203-svn
- [daemon@java-203-svn ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.50.7
- 28
- root@192.168.50.7's password:
- Now try logging into the machine, with "ssh 'root@192.168.50.7'", and check in:
- .ssh/authorized_keys
- to make sure we haven't added extra keys that you weren't expecting.
- [daemon@java-203-svn ~]$ date && ssh root@192.168.50.7 date
- Tue Mar 22 16:03:15 CST 2011
- 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脚本配置演示及排错相关推荐
- 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )
文章目录 一.交叉编译 Shell 脚本参考 二.NDK r16b 版本配置 三.libjpeg-turbo 交叉编译 Shell 脚本 四.执行 libjpeg-turbo 交叉编译 Shell 脚 ...
- 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )
文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...
- 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )
文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...
- subversion安装与配置备忘录
subversion安装与配置备忘录 前两天给公司安subversion,总是出问题,今天总结一下整个过程,以备将来遗忘.下边是我对在网上的一些文章的添加和补充基础上写的. 我是安装windows版本 ...
- linux subversion 根目录检出,经验总结:详解Linux下Subversion的安装配置记录 下
上节介绍额Linux下Subversion的安装问题,本节介绍Linux下Subversion配置问题,你可以和Windows下Subversion的安装配置做一个对比,你就会发现在这两种操作系统中S ...
- 5、Oracle备份(oracle备份脚本配置)
1.1 Oracle数据库备份 1.1.1 链接Oracle介质管理库 请在数据库节点上操作. [oracle@db01/usr/openv/netbackup/bin]$ ./oracle_link ...
- 版本管理器subversion的简单配置以及和apache的结合使用
linux下subversion+apache的配置我在网上看过很多关于subversion配置的blog,但是按照其 上操作并不能成功配置,也讲的不是很清楚.在此向大家推荐<使用Subvers ...
- linux pppd ip up 脚本,pppd拨号脚本配置
ppp拨号脚本配置 摘要 本文主要介绍了嵌入式Linux系统下使用pppd 2.4.4来进行PPP拨号需要使用的脚本是如何配置的,配置项的含义,同时也说明了如何来配置参数,实现ppp拨号上网. 一.问 ...
- Linux磁盘空间爆满怎么办?定时文件清理脚本配置实现
在Linux系统上跑任务会遇到系统磁盘空间爆满的情况,表现出来的现象是程序运行报错,或执行缓慢.记录下Linux磁盘空间占用的查看方法和文件清理脚本定时触发配置的实现. 一.Linux磁盘空间占用分析 ...
最新文章
- 谈谈对于企业级系统架构的理解(zz)
- 【论文解读】ICDM2020 | 挖掘异构图中的层级结构
- bartender的安全策略不允许指定的用户执行此操作_Linux sudo 被曝提权漏洞,任意用户均能以 root 身份运行命令...
- micro_macro
- 回调函数 线程_从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2...
- Python爬虫--- 1.2 BS4库的安装与使用
- 笔记-多项式相关操作
- 经过两个月的面试,我给你整理了这些面试考点(Java版)
- HTML标签(持续更新)
- 截取数组中的第i个元素,并返回截取后的结果
- pycharm和python一样吗_PyCharm中Directory与Python package的区别
- 2021筠连中学高考成绩查询,四川筠连中学2021年排名
- java做后台移动端QQ第三方登录
- 惠普m1216硒鼓清零步骤_hpm1213nf清零
- 【Axure原型分享】短视频APP原型模板
- 利用HTML完成登陆界面设计
- 云南省计算机文字录入考试题,计算机文字录入处理员高级试题A
- Spring依赖注入和简单demo
- WHOIS查询检索,域名信息查询工具软件
- java哨兵模式_哨兵模式详解
热门文章
- java Windows7 下环境变量设置
- 12.HTML编辑器(CKEditor、CKFinder集成)
- 《.Net框架程序设计》读书笔记 之 结构和索引器
- ubuntu20.04 中ifconfig无ens33
- arm b bl 地址无关码_ARM_异常和中断
- Python编程语言基础入门教程
- 简单介绍CentOS6升级glibc操作步骤
- 单片机开发项目全局变量太多怎么管理?
- [NC15748]旅游 树形dp基础
- html页面sql注入,再谈SQL注入入侵动网SQL版-ASP TO HTML WITH TEMPLATE3