码迷,mamicode.com
首页 > 其他好文 > 详细

svn服务端hooks钩子可用于多项目自动同步

时间:2015-01-08 19:44:38      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

废话不多说,直接上post-commit脚本了:

日志会全部记录下来包括同步的文件

vim post-commit

 

#!/bin/sh
REPOS="$1"                  # 仓库的路径
REV="$2"                    # 新提交的版本号

export LC_ALL="zh_CN.UTF-8"
expor LANG="en_US.UTF-8"

LOGFILE=/var/log/svn-hooks.log    # 钩子脚本的日志
# 脚本的标准输出和标准错误输出都打印到日志文件里
exec 1>>"$LOGFILE"
exec 2>&1

SVN=/usr/bin/svn
SVNUSER=luoxiaoguang
SVNPWD=lxg888
WEBROOT=/usr/local/nginx/html
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")  #提交作者
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目录集合
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")    #提交时的备注信息,不建议用中文

function myecho() {
    echo "$TIME" "$*"
}

myecho "**************************************************************"
myecho "提交版本:$REV 作者:$AUTHOR"
myecho "提交备注:$MESSAGE"
myecho "修改目录:$(echo $CHANGEDDIRS | tr ‘\n‘ ‘ ‘)"

MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)  #CHANGEDDIRS里的主目录
# 遍历提交的代码目录,同步到WEB服务器上
while [ "$CHANGEDDIRS" != "" ];do
    PROJECT=$(echo $MASTERDIR | awk -F / ‘{print $2}‘)
    myecho "当前项目:$PROJECT"
    # 判断项目文件夹
    if [ "$PROJECT" == "ipengbei" ];then

        WEB=/usr/local/nginx/html/ipengbei

        myecho
        myecho "项目:$PROJECT 同步目录:$MASTERDIR"
        myecho "同步 $MASTERDIR 到 tyq:$WEBROOT/ipengbei"

        $SVN --non-interactive update $WEB  --username luoxiaoguang --password lxg888

        chmod -R 755 $WEB

    elif [ "$PROJECT" == "ipengbeiweb" ];then

        WEB=/usr/local/nginx/html/ipengbeiweb

        myecho
        myecho "项目:$PROJECT 同步目录:$MASTERDIR"
        myecho "同步 $MASTERDIR 到 ipbweb_dev:$WEBROOT/ipengbeiweb"

        $SVN update --non-interactive  $WEB  --username luoxiaoguang --password lxg888

        chmod -R 755 $WEB
        chmod -R 777 $WEB/App/Runtime
        chmod -R 777 $WEB/Webconfig
        chmod -R 777 $WEB/UF

        else
        :
    fi
    # 在目录集合里删除已经同步好的目录
    CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "^$MASTERDIR")
    # 获取新的需要同步的主目录
    MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)
done

 

svn服务端hooks钩子可用于多项目自动同步

标签:

原文地址:http://www.cnblogs.com/guangxiaoluo/p/4211380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!