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上的代码。

posted on 2016-03-10 08:20  ziyi_ang  阅读(262)  评论(0编辑  收藏  举报

导航