有時候,我們會對一個已經開發的專案分支成一個新的版本固定, 然後在主線 trunk 的程式基礎上, 繼續開發一個新的專案. 隨著程式開發時程, 各種不同的版本就會像泡泡一樣一個一個生出來. 常見的分支方式如: 家庭版, 專業版, 企業版.
以前我的作法是直接把程式複製到新的目錄, 然後在新的地方進行新專案的開發.
ok, 這沒有問題!
問題是但是當你在開發的過程中, 發現了共用的程式碼部分有 bug, 因而作了訂正. 然而這個修正的程式只會發生在目前修改的版本上, 其他版本的專案除非手動一一進行修正, 否則 bug 就一直會留在那裡. 這手動修改還真的很麻煩.
有了 branch, 就不一樣了.
針對一直在 go 的程式開發主線 trunk, 發現了各個版本都會用到的程式碼有錯誤進行修正. 我們可以直接將要訂正的分支專案 patch 成目前最新版本 (單一檔案 merge 指令).
當然, 你也可以保持不動, 讓某一個版本分支使用以前的程式碼.
另一個重點是, 在 svn 的管理下, 對於眾多的版本branches, 系統只會保留一份完稿, 其他的只有儲存 difference. 比起我以前手動備份的方式, 磁碟空間省多了.
branch 能達到多專案共用平台一致性, 又能節省空間. 不爽又隨時能夠恢復原狀. 真是居家旅行必備良藥.
我們以Windows 平台下流行的 TortoiseSVN client 為例, 詳細的操作說明如下.
Create a branch (兩個步驟)
1. 一開始你的目錄一定要有 branches (trunk 是你的主線開發專案)
ex:
(note: 請把 trunks 改成 trunk)
2. 選擇你的 work space 目錄,
- 假設你要複製的目錄名稱為 abc
- 選右鍵建立 branches
作法如下:
Step 1: 在要複製的目錄 abc 上面按右鍵, 選擇小烏龜建立 branches
Step 2: To 的位址, 選擇你的 branch 分支要放的位置
ex: branches/Win98
3. 完成
檢查: 執行 Update 後, 你的 branches 中就會有 你的分支內容了
如何把修改過的共用部分程式, merge 到一個過去的分支呢 ? (例如: 過去的分支目錄為 win98)
Step 1:
到 branches/win98/trunk 目錄上, 直接點選滑鼠右鍵, 執行 merge 指令
Step 2:
選擇 From 為目前最新的程式主線 trunk, 並且設定 Revision 號碼
Step 3: 完成
處理 conflict
1. 到出問題的那個檔, 手動修改成你要的樣子, 然後按 resolve 即可
by Jing
延伸資訊
沒有留言:
張貼留言