首页 > 代码库 > svn服务端hooks钩子可用于多项目自动同步

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

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

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

vim post-commit

 

#!/bin/shREPOS="$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>&1SVN=/usr/bin/svnSVNUSER=luoxiaoguangSVNPWD=lxg888WEBROOT=/usr/local/nginx/htmlSVNLOOK=/usr/bin/svnlookTIME=$(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钩子可用于多项目自动同步