Linux环境下svn回滚单个文件的shell函数

2017-01-12 19:14:25来源:CSDN作者:Register_man人点击

废话少说,直接上代码

svnRollBack(){    # 获取文件路径    file=$1    # 更新文件到最新版    arr=`svn up $file`    # 将文件版本号从信息中抽取出来    arr=${arr##* }    v=${arr%。*}    # 获取到文件的所有更新信息    arr=`svn log $file`    # 从更新信息中删去不必要的信息    arr=${arr#*------------------------------------------------------------------------}    # 这条指令执行两遍代表着获取当前版本的上一个版本号    # 想获得上n个版本就重复n+1遍    arr=${arr#*------------------------------------------------------------------------}    # 继续抽取    arr=${arr%%|*}    # 获得目标版本号    lv=${arr#*r}    echo "roll back"    # 将两个版本的文件融合    svn merge -r $v:$lv $file    # 提交修改    svn commit -m "roll back" $file}

一、以下为 svn up 执行后的结果,为了获取版本号就必须将285097提取出来

这里写图片描述


二、以下为通过 svn log 获取文件的更新记录,为了获取当前版本的上一个版本,就必须将其中的252514(没有r)提取出来

这里写图片描述


三、通过svn merge 将两个版本的文件进行合并

svn merge -r 新版本号:需要回滚到的版本号 文件路径

四、通过svn commit 将文件提交

svn commit -m 说明信息 文件路径

五、关于抽取版本号

由于执行svn的指令每次返回的都是一堆乱七八糟的东西所以为了抽取版本号,必须使用Shell自带的字符串截取方法,详情请看另外一篇博客

Shell脚本截取字符串的方法

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台