svn钩子使用
参考:http://jingyan.baidu.com/article/546ae18502e3aa1149f28c13.html
1,使用svn提交后立即更新到其他服务器上(post-commit),
注意:
你要先更新一个版本到目录,后续的提交才会自动更新,详情见“第二部分”
不然一直会失败的。(纠结了很久才发现这个问题滴,血泪的教训)
环境:centos
1,用命令将svn信息check到指定文件夹:
svn co svn://10.10.10.226/project /usr/share/nginx/html/ci3 --username lzx --password 123456 --no-auth-cache
然后会报错:
svn: Can't open file '/usr/share/nginx/html/ci3/.svn/lock': Permission denied
然后执行,赋予权限
chown -vR apache:apache /usr/share/nginx/html/ci3/
2,cd /var/svn/project/hooks
3,cp post-commit.tmpl post-commit
4,vi post-commit
参考如下:http://www.cnblogs.com/chenqionghe/p/4527763.html
export LANG=en_US.UTF-8 SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件 WEB=/var/www/html/test #要更新的目录 $SVN update $WEB --username cqh --password 123456 chown -R www:www $WEB
暂时不用以下内容:
REPOS="$1" REV="$2" mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf export LANG=en_US.UTF-8 SVN=/usr/bin/svn WEB=/home/wwwroot/admin/ $SVN update $WEB –username user –password user --no-auth-cache #chown -R apache:apche $WEB
暂时不用以下内容:
#!/bin/sh
REPOS="$1"
REV="$2"
# export LANG=en_US.UTF-8
export LANG=zh_CN.UTF-8
svn update /ww/webroot/szy2 --username lzx --password 123456 --no-auth-cache
这样就会自动提交到目标ip上代码。
2,通过http请求直接将最新代码更新到目标服务器上(php环境,原理运用lshell命令):
在192.168.1.1这台机器上的这个类中,执行shell命令:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Svn extends CI_Controller { public function index() { set_time_limit(0); $result = shell_exec('svn co svn://192.168.1.1/project /usr/share/nginx/html/project --username admin --password admin --no-auth-cache 2>&1'); //$result = shell_exec('svn update --accept theirs-full /usr/share/nginx/html/project --username admin --password admin --no-auth-cache 2>&1'); echo nl2br($result); } }
这样就会更新192.168.1.1上的代码。