首页 > 代码库 > 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钩子可用于多项目自动同步
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。