首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > CVS SVN >

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

2012-07-08 
使用svn钩子自动干净地更新文件使用svn的钩子post-commit做更新时,传参只有REPOS和REV,一个是库名,一个版

使用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/bashREPOS="$1"REV="$2"LOG=/var/svnroot/logs/post-commit.logAPP_ROOT=/opt/webAppCHANGE=$(svnlook changed -r $REV $REPOS |awk {'print $2'})DST=${CHANGE/\/src/} #替换掉路径中src/字符串,部署路径没有这个的svn export file://$REPOS/$CHANGE $APP_ROOT/$DST --force >>$LOG 2>&1if [ $? == 0 ]; then    echo [`date +"%Y-%m-%d %H:%M:%S"`] $CHANGE" ==> "$APP_ROOT/$DST ---OK >>$LOGelse    echo [`date +"%Y-%m-%d %H:%M:%S"`] $CHANGE" ==> "$APP_ROOT/$DST ---fail >>$LOGfi

?

?

?

热点排行