废话少说,直接上代码:
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脚本截取字符串的方法://m.ajphoenix.com/linux/27824.html
本文永久更新地址://m.ajphoenix.com/linux/27825.html