2008年4月21日 星期一

[程式設計] SVN 如何建立一個 branch

有時候,我們會對一個已經開發的專案分支成一個新的版本固定, 然後在主線 trunk 的程式基礎上, 繼續開發一個新的專案. 隨著程式開發時程, 各種不同的版本就會像泡泡一樣一個一個生出來. 常見的分支方式如: 家庭版, 專業版, 企業版.

以前我的作法是直接把程式複製到新的目錄, 然後在新的地方進行新專案的開發.

ok, 這沒有問題!

問題是但是當你在開發的過程中, 發現了共用的程式碼部分有 bug, 因而作了訂正. 然而這個修正的程式只會發生在目前修改的版本上, 其他版本的專案除非手動一一進行修正, 否則 bug 就一直會留在那裡.  這手動修改還真的很麻煩.

 

有了 branch, 就不一樣了.

針對一直在 go 的程式開發主線 trunk, 發現了各個版本都會用到的程式碼有錯誤進行修正. 我們可以直接將要訂正的分支專案 patch 成目前最新版本 (單一檔案 merge 指令).

當然, 你也可以保持不動, 讓某一個版本分支使用以前的程式碼.

另一個重點是, 在 svn 的管理下, 對於眾多的版本branches, 系統只會保留一份完稿, 其他的只有儲存 difference. 比起我以前手動備份的方式, 磁碟空間省多了.

 

branch 能達到多專案共用平台一致性, 又能節省空間.  不爽又隨時能夠恢復原狀. 真是居家旅行必備良藥.

 

我們以Windows 平台下流行的 TortoiseSVN client 為例, 詳細的操作說明如下.

Create a branch (兩個步驟)

1. 一開始你的目錄一定要有 branches (trunk 是你的主線開發專案)
ex:
    snap006 (note: 請把 trunks 改成 trunk)

2. 選擇你的 work space 目錄,

         - 假設你要複製的目錄名稱為 abc

         -  選右鍵建立 branches

      作法如下:

      Step 1: 在要複製的目錄 abc 上面按右鍵, 選擇小烏龜建立 branches

      Step 2: To 的位址, 選擇你的 branch 分支要放的位置 
                     ex: branches/Win98

snap006

3. 完成

檢查: 執行 Update 後, 你的 branches 中就會有 你的分支內容了

snap006
   snap006

 

如何把修改過的共用部分程式, merge 到一個過去的分支呢 ? (例如: 過去的分支目錄為 win98)

Step 1:

到 branches/win98/trunk 目錄上, 直接點選滑鼠右鍵, 執行 merge 指令

snap006

Step 2:

選擇 From 為目前最新的程式主線 trunk, 並且設定 Revision 號碼

snap006

Step 3: 完成

 

 

處理 conflict

1. 到出問題的那個檔, 手動修改成你要的樣子,  然後按 resolve 即可

by Jing

延伸資訊

[1] [程式設計] 為你的程式加上版本控制 -- SVN

沒有留言:

張貼留言