2010年6月1日 星期二

[HowTo] SVN rollback

網路上看到一段話寫著:

SVN 的設計原則就是鼓勵程序員瘋狂 commit,不用怕 commit 有 bug 的程式碼,SVN 記錄整個專案的變動歷程,而不是單一程式碼的變動,所以他的版次是整個專案在計算的。因此在版次之間的切換很方便,今天改錯了,那就回到先前沒錯的版本就 好。也就是因為這樣,他的 check-in check-out 速度飛快無比。為什麼要瘋狂 commit 呢,

Merge early, Merge often, Merge always…

寫了 code 就 commit,改得越少,Merge 越自動,比兩個人坐在隔壁寫程式還要寫得快。而且可以一起改同一支程式,而不用 Lock 程式。這是 SVN 的基本設計理念。如果要把某個時間點的程式碼狀態記下來,那就做一個標註(Tag) 在某個版號上就可以了。

===================

回到主題,話雖如此,但應該不少朋友沒親自做過version rollback的動作
這邊分享一下,下回可以試試看:

假設新的版本是888,舊的版本是777
可以下 svn merge -r 888:777
就可以rollback到777版本了

有人或許會聯想到,這和svn up -r 777不同的是???

用merge的方式,會連888版本的log history都保留,因為你想做的是commit之後會是889之類
但如果你是直接update成777版本,這個時候你的local copy是777,且log history也是777
這個時候即使你想要commit,server應該也會報錯的喔~

沒有留言:

張貼留言