#!/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(" ","");print}') #找出最近的版本,并进行格式化 echo 'verions finding....' echo $version_list #版本号 最近两个 rocback_version=$(svn log --limit 2|tac |sed -n 4p|awk '{print $1}') #要回滚的前一个版本号 echo -e " " echo 'Version number that you want to roll back' echo -e " " echo $rocback_version #版本号 echo -e " " echo 'are you sure of to ' $rocback_version ' Yes or No' #确定要回滚过去 echo -e " " read answer #读取用户输入 if [ $answer == "Yes" ] then svn up -r $rocback_version #回滚代码 echo -e " " 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/