使用svn钩子自动干净地更新文件

使用svn的钩子post-commit做更新时,传参只有REPOS和REV,一个是库名,一个版本号。通常的情况是使用svn update代码,这种情况会产生很多的.svn版本控制文件。

看了下svn的帮助,发现2个命令可以解决以上的问题

1.svnlook changed -r $REV $REPOS

这个命令是检查本次版本中发生改变的文件,返回文件的在库中的相对路径

2.svn export file:///$REPOS/文件 目标地

导出干净的文件到目标地,不带.svn版本控制文件

于是又查了下shell脚本语法,得出以下脚本post-commit:

#!/bin/bash

REPOS="$1"
REV="$2"
LOG=/var/svnroot/logs/post-commit.log
APP_ROOT=/opt/webApp

CHANGE=$(svnlook changed -r $REV $REPOS |awk {'print $2'})
DST=${CHANGE/\/src/} #替换掉路径中src/字符串,部署路径没有这个的

svn export file://$REPOS/$CHANGE $APP_ROOT/$DST --force >>$LOG 2>&1

if [ $? == 0 ]; then
    echo [`date +"%Y-%m-%d %H:%M:%S"`] $CHANGE" ==> "$APP_ROOT/$DST ---OK >>$LOG
else
    echo [`date +"%Y-%m-%d %H:%M:%S"`] $CHANGE" ==> "$APP_ROOT/$DST ---fail >>$LOG
fi

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值