svn利用钩子脚本功能实现代码同步到web目录
2017-03-17 14:43
218 查看
一、hook简单介绍
为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的 事件发生时,相应的 hook会被调用,hook其实就相当于特定事件的处理函数。每个hook会得到与它所处理的事件相关的参数,根据 hook的返回值,Subversion会决定是否继续当前的提交过程
要实际安装一个可用的钩子,你需要在 repos/hooks目录下安装一些与钩子同名(如 start-commit或者post-commit)的可执行程序或脚本。
二、本地机器SVN自动更新
1. export方式(备份)
在使用svn客户端时,有可能需要对某一个版本进行本地备份,比如制作成压缩包进行发布,这时候需要从svn文件夹中提取出内容,去除.svn等隐藏的svn配置文件。最笨的方法拷贝一份出来,然后显示隐藏文件,把所有 .svn文件夹都删掉。在svn菜单中,可以找到export命令,这个命令可以将当前svn目录中的内容干净地导出到指定的目录
例如你版本库的svn访问地址是http://10.30.11.12:8080/svn/project1,你想把这个版本库下的/trunk/web文件夹发布到tomcat上,发布到tomcat的文件夹地址是d:/tomcat/opt/web,svn的管理员用户名是abc,密码是12345,那么这个钩子程序应该就是:
svn export http://10.30.11.12:8080/svn/project1/trunk/web d:/tomcat/opt/web --force --username abc --password 12345 --no-auth-cache
注:
--force 是说强制覆盖d:/tomcat/opt/web这个文件夹,避免这个文件夹不为空时报错
--username abc --password 12345 是自动将用户名和密码作为参数传送进去
--no-auth-cache 是说不缓存用户名和密码,这是出于安全考虑
2.update方式
修改hooks/post-commit
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
STATIC_DIR=/web/root/wwwdeng #注意权限问题
$SVN update $STATIC_DIR --username deng --password 123456 --no-auth-cache
#必须加上--no-auth-cache不然会报错!!
默认使用的shell类型是sh,最好改成bash,sh是bash的子集,centos中sh其实就是软链接到bash
3.update和export比较
update会生成一个隐藏.svn文件夹,这个文件夹是我们不需要的,当然了,如果整个发布的内容很多的话,建议还是用update,而不用export,因为update只更新有变化的部分,而export将重新导出所有内容,网络消耗比update大。
三、svn实现远程机器自动更新
首先实现A机器通过ssh无密码登陆B机器, 修改A机器的post-commit文件
/usr/bin/ssh -l root 192.168.127.183 "/bin/bash /home/www/svnup.sh"
然后在B机器的/home/www/目录创建svnup.sh可执行文件
/usr/bin/svn update /web/root/code
版本库有提交请求的时候自动会执行post-commit脚本,post-commit脚本通过ssh让远程机器执行shell脚本自动更新svn。
为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的 事件发生时,相应的 hook会被调用,hook其实就相当于特定事件的处理函数。每个hook会得到与它所处理的事件相关的参数,根据 hook的返回值,Subversion会决定是否继续当前的提交过程
要实际安装一个可用的钩子,你需要在 repos/hooks目录下安装一些与钩子同名(如 start-commit或者post-commit)的可执行程序或脚本。
二、本地机器SVN自动更新
1. export方式(备份)
在使用svn客户端时,有可能需要对某一个版本进行本地备份,比如制作成压缩包进行发布,这时候需要从svn文件夹中提取出内容,去除.svn等隐藏的svn配置文件。最笨的方法拷贝一份出来,然后显示隐藏文件,把所有 .svn文件夹都删掉。在svn菜单中,可以找到export命令,这个命令可以将当前svn目录中的内容干净地导出到指定的目录
例如你版本库的svn访问地址是http://10.30.11.12:8080/svn/project1,你想把这个版本库下的/trunk/web文件夹发布到tomcat上,发布到tomcat的文件夹地址是d:/tomcat/opt/web,svn的管理员用户名是abc,密码是12345,那么这个钩子程序应该就是:
svn export http://10.30.11.12:8080/svn/project1/trunk/web d:/tomcat/opt/web --force --username abc --password 12345 --no-auth-cache
注:
--force 是说强制覆盖d:/tomcat/opt/web这个文件夹,避免这个文件夹不为空时报错
--username abc --password 12345 是自动将用户名和密码作为参数传送进去
--no-auth-cache 是说不缓存用户名和密码,这是出于安全考虑
2.update方式
修改hooks/post-commit
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
STATIC_DIR=/web/root/wwwdeng #注意权限问题
$SVN update $STATIC_DIR --username deng --password 123456 --no-auth-cache
#必须加上--no-auth-cache不然会报错!!
默认使用的shell类型是sh,最好改成bash,sh是bash的子集,centos中sh其实就是软链接到bash
3.update和export比较
update会生成一个隐藏.svn文件夹,这个文件夹是我们不需要的,当然了,如果整个发布的内容很多的话,建议还是用update,而不用export,因为update只更新有变化的部分,而export将重新导出所有内容,网络消耗比update大。
三、svn实现远程机器自动更新
首先实现A机器通过ssh无密码登陆B机器, 修改A机器的post-commit文件
/usr/bin/ssh -l root 192.168.127.183 "/bin/bash /home/www/svnup.sh"
然后在B机器的/home/www/目录创建svnup.sh可执行文件
/usr/bin/svn update /web/root/code
版本库有提交请求的时候自动会执行post-commit脚本,post-commit脚本通过ssh让远程机器执行shell脚本自动更新svn。
相关文章推荐
- svn利用钩子脚本功能实现代码同步到web目录
- svn利用钩子脚本功能实现代码同步到web目录 推荐
- svn利用钩子脚本功能实现代码同步到web目录
- svn利用钩子实现代码同步到web目录
- svn利用钩子实现代码同步到web目录
- SVN利用钩子实现代码同步到web目录
- windows svn利用钩子实现代码同步到web目录
- win环境下SVN利用钩子实现代码同步到WEB目录
- Linux CentOS SVN 设置钩子hooks/post-commit来同步更新服务器web目录,实现代码自动部署
- 初学svn对版本进行控制 用post- commit钩子实现代码同步到web目录
- centos7配置svn钩子hooks脚本自动同步代码到项目目录
- 利用svn钩子实现php代码同步
- yum搭建svn apache 利用钩子检出到web目录 自动同步
- SVN 设置钩子将代码同步到Web目录下面
- CentOS6.8 搭建SVN并用钩子自动实现同步到web目录
- Centos上搭建SVN服务器并实现自动同步至web目录
- git/svn钩子自动同步web目录
- 阿里云服务器安装wdcp面板和SVN服务器,以及实现同步更新web根目录
- 利用SVN的post-commit钩子实现多项目自动同步
- windows下svn钩子实现每次提交更新至web目录