zoukankan      html  css  js  c++  java
  • svn服务端hooks钩子可用于多项目自动同步

    废话不多说,直接上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 '
    ' ' ')"
    
    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
  • 相关阅读:
    RN起步常见问题
    spa(单页应用)中,使用history模式时,微信长按识别二维码在ios下失效的问题
    vue 使用axios 跨域请求数据的问题
    vue 使用axios 跨域请求数据的问题
    vue 集成 axios 发送post请求 payload导致后台无法接收到数据问题
    vue-cli 脚手架目录结构说明
    vue-cli 前端开发,后台接口跨域代理调试问题
    ios video标签部分mp4文件无法播放的问题
    青岛旅游攻略
    iOS8使用TestFlight进行内部测试功能尝鲜
  • 原文地址:https://www.cnblogs.com/guangxiaoluo/p/4211380.html
Copyright © 2011-2022 走看看