jackluo
#!/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/

分类:

技术点:

相关文章: