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脚本截取字符串的方法
相关文章推荐
- linux 环境下svn忽略文件的设置
- svn 回滚 单个文件 或者 目录 或者 整个项目
- linux环境下将文件纳入svn的管理之下
- OS X环境下SVN回滚工程到指定版本,回滚指定文件到指定版本
- linux环境下批量删除SVN未加入版本控制的文件
- 文件结束时C与LINUX环境下的区别
- VMware下Windows系统和Linux系统混合环境文件共享
- Linux 环境下 Makefile 文件制作
- Linux 环境下 Makefile 文件制作浅谈(一)
- 在Linux环境下使用ReiserFS文件系统
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――mount方式
- 【嵌入式Linux学习七步曲之第一篇 Linux主机开发环境】虚拟机下Linux和windows的文件共享――共享方式
- linux环境下读写超过2G的大文件
- SVN Checkout Single File(SVN签出,更新单个文件)
- linux环境下使用GFS文件系统
- 在ununtu linux的配置文件中一劳永逸的设置环境变量
- Linux下设置环境变量的文件
- Linux环境下使用GFS文件系统
- Linux环境下的ReiserFS文件系统
- Linux 环境下 Makefile 文件制作浅谈(二)