废话不多说,直接上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

最新文章

  1. android Intent介绍
  2. NSDate,NSNumber,NSValue
  3. PHP基础语法: echo,var_dump, 常用函数:随机数:拆分字符串:explode()、rand()、日期时间:time()、字符串转化为时间戳:strtotime()可变参数的函数:PHP里数组长度表示方法:count($attr[指数组]);字符串长度:strlen($a)
  4. python中string.casefold和string.lower区别
  5. linux下DNS设置以及解析顺序
  6. China特色创新现状
  7. DHCP租约时间工作原理
  8. spring html5 拖拽上传多文件
  9. 笔记本电脑连wifi然后通过有线网口做桥接
  10. P1352 没有上司的舞会
  11. 利用face_recognition库裁取人脸
  12. 有关UnrealEngine材质编辑器中的Custom节点的一些小贴士
  13. 在netty3.x中存在两种线程:boss线程和worker线程。
  14. 《大话设计模式》c++实现 之策略模式
  15. 4、CentOS6.5下安装php5.3
  16. Hiero_FnNukeShotExporter的解析与修改
  17. OI中的莫比乌斯反演
  18. 使用Spring4时, 运行时出现找不到MappingJacksonHttpMessageConverter的情况
  19. java里的静态成员变量是放在了堆内存还是栈内存
  20. {sharepoint} SetPermission

热门文章

  1. std::bind(二)
  2. tp框架查询
  3. 一段代码了解Java中char和int的转换
  4. hdu 1049 Climbing Worm
  5. wireshark怎么抓包、wireshark抓包详细图文教程
  6. yum使用本地源
  7. sql 去除重复记录
  8. hdu.5195.DZY Loves Topological Sorting(topo排序 && 贪心)
  9. JdbcTemplate三种常用回调方法
  10. JSOI 2008 火星人prefix