#!/bin/sh ############################## # 2015-07-15 # # author jackluo # # Email net.webjoy@gmail.com # ############################## version_list=$(svn log --limit 2|sed \'1d\'|sed \'$d\'|awk -F \'|\' \'{print $1}\'|awk -v RS="" \'{gsub("\n","");print}\') #找出最近的版本,并进行格式化 echo \'verions finding....\' echo $version_list #版本号 最近两个 rocback_version=$(svn log --limit 2|tac |sed -n 4p|awk \'{print $1}\') #要回滚的前一个版本号 echo -e "\r\n" echo \'Version number that you want to roll back\' echo -e "\r\n" echo $rocback_version #版本号 echo -e "\r\n" echo \'are you sure of to \' $rocback_version \' Yes or No\' #确定要回滚过去 echo -e "\r\n" read answer #读取用户输入 if [ $answer == "Yes" ] then svn up -r $rocback_version #回滚代码 echo -e "\r\n" echo \'Code is rocback is OK !!!^__^!!!\' else echo "Abandoned operation program exit" #放弃操作 fi
1、保证我们拿到的是最新代码:
svn update
假设最新版本号是28。
2、然后找出要回滚的确切版本号:
svn log [somefile]
如果log很多,可以使用参数--limit
svn log --limit 10 [somefile]
假设根据svn log日志查出要回滚的版本号是25,此处的somefile可以是文件、目录或整个项目
如果想要更详细的了解情况,可以使用
svn diff -r 28:25 [somefile]
3、回滚到版本号25:
svn merge -r 28:25 [somefile]
为了保险起见,再次确认回滚的结果:
svn diff [somefile]
发现正确无误,提交。
4、提交回滚:
svn commit -m "Revert revision from r28 to r25,because of ..."
提交后版本变成了29。
将以上操作总结为三条如下:
1. svn update,svn log,找到最新版本(latest revision)
2. 找到自己想要回滚的版本号(rollback revision)
3. 用svn merge来回滚: svn merge -r 28:25 somefile
注意:虽然 svn up -r 25 somefile 也可以使文件回滚,但是当提交时由于不是最新版本而无法提交,还需要先更新,拷贝,再提交,所以不建议使用。
补充:
svn忽略文件或文件夹
svn propset svn:ignore \'*\' template_c/