The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何用 TortoiseSVN 復原錯誤的簽入動作

在一個開發團隊裡,當有人將錯誤的程式碼簽入(Commit)到 Subversion 儲存庫(Repository)去,的確會造成許多人的麻煩,這時程式開發經理應該就要立即出面,將這類的問題��除。

如果目前最新的版本(Revision)是 9 的話,你可能想要將版本復原到 Revision 8,這時候有兩種方法可以做:

1. 透過 Update to revision.. 將目前的程式碼更新至第 8 版

透過 Update to revision.. 將目前的程式碼更新至第 8 版

但這種作法是錯的!

因為這方法只是將你的工作目錄更新到舊的版本(第 8 版),這時重新所做的修改其實都會失敗,因為當你要 commit 的時候,Subversion 就會告訴你必須先更新(SVN Update)過才能 commit,到時就會發生衝突!

2. 透過 Merge (合併) 將目前的程式碼合併到第 8 版

透過 Merge (合併) 將目前的程式碼合併到第 8 版

這才是正確的作法!

因為這等於是將目前的版本 ( 第 9 版 ) 直接合併到第 8 版去,現有的工作目錄還是處於第 9 版的狀態,只是所有程式碼因為執行合併的關係而變成第 8 版的內容而已,當你 Merge 成功以後,還必須 commit 一次,讓第9版修改後的程式簽入到儲存庫 ( 成為第 10 版 ),這時的第 10 版就會跟原本的第 8 版一模一樣了!此時,再請專案成員做一次 SVN Update 就可以讓大家回復到正確程式碼的狀態了!

而將目前的 Revision 合併回上一個 Revision 的方式如下,以下將以 TortoiseSVN 工具做說明:

  1. 先在工作目錄的根目錄顯選取 SVN Merge 功能

    透過 Merge (合併) 將目前的程式碼合併到第 8 版

    開啟 SVN Merge 對話方塊

  2. 在 From: 的地方選取 "HEAD Revision" ,在 To: 的地方選取 Revision 並設定到你想要還原到的版本編號 ( 此範例是 8 ),最後按下 Merge 按鈕

    在 From: 的地方選取 "HEAD Revision" ,在 To: 的地方選取 Revision 並設定到你想要還原到的版本編號 ( 此範例是 8 ),最後按下 Merge 按鈕

  3. 此時你將會看到在工作目錄下的檔案已經被異動了,最後再執行 SVN Commit 就可以復原成功了!