標籤:
#!/bin/sh############################### 2015-07-15 ## author jackluo ## Email [email protected] ###############################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/
svn 復原到上一個版本shell 指令碼