您的位置:首页 > 运维架构 > Shell

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

2017-01-12 16:42 330 查看

废话少说,直接上代码

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脚本截取字符串的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: