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

svn 自动更提交自动同步到服务器,代替了svn钩子

时间:2015-09-17 15:29:43      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:svn 钩子   svn自动更新发布   

原理:

技术分享



1 先从SVN 创库update到副本

2 再由副本如果有变化同步到真实测试环境(这里排除一些不需要同步的目录跟文件)

vi rsync.sh

#!/bin/bash

#author lrm929

#date 2015-09-17

rsync () {     

#定义rsync 函数

svn update  /www/web/fz_checkout >/dev/null  

#svn副本更新,这个更新是为了取svn log的值

aa=$(svn log /www/web/fz_checkout/ |grep r|sed -n ‘1p‘|awk ‘{print $1}‘|sed ‘s/r//g‘) 

#取svn 最新的一条log 的编号

cc=$(cat /tmp/aa.txt)

#这个是定义一个比最新一条小 的值

if [ $aa -gt $cc ]  

#判断svn是否有更新,就是对比svn log 最新一条日志跟更新前的一条日志对比

     then

        svn update /www/web/fz_checkout 

        #svn副本更新 (这个其实可以不用)

        rsync -avRl --delete --exclude-from="/root/exclude.list" * /www/web/fz/

        #更新副本到真实测试环境,排除 exclude.list的目录跟文件

        svn log |grep r|sed -n ‘1p‘|awk ‘{print $1}‘|sed ‘s/r//g‘ >/tmp/aa.txt

       #取到本次更新的svn log 值存储到/tmp/aa.txt文件,就是为了后面更新做比较的

        NOW=$(date ‘+%Y-%m-%d %H:%M‘)

        echo "#########$NOW############" >>/tmp/rsync.log

        echo "updat   rsync........................................................"

       #将更新时间写到日志

      else

         echo "1" >/dev/null

        #如果没有更新就退出了

fi

}


while [ true ]; do

/bin/sleep 2

rsync 

done

# 然后写个循环中间sleep 2秒 去执行这个函数



nohup /www/web/fz_checkout/rsync.sh >/tmp/rsync.log  &

#最后将本脚步在后台执行


本文出自 “信不信由你” 博客,请务必保留此出处http://312461613.blog.51cto.com/965442/1695600

svn 自动更提交自动同步到服务器,代替了svn钩子

标签:svn 钩子   svn自动更新发布   

原文地址:http://312461613.blog.51cto.com/965442/1695600

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