SVN分支管理策略
版本庫布局
在將數據導入到版本庫之前,首先需要考慮如何組織數據。如果使用一種推薦的布局,以后的操作將會更容易許多。
有一些標準的,推薦使用的組織版本庫結構的方法。大多數人創建一個 trunk 目錄掌管開發的 “主干”,一個 branches 目錄存放分支副本,以及一個 tags 目錄存放標記副本。如果一個版本庫只掌管一個項目,那么人們通常創建這些頂級目錄:
/trunk
/branches
/tags
因為這個布局非常通用,所以當使用TortoiseSVN 創建版本庫時,它會提出幫你創建這個目錄結構。
如果一個版本庫包含多個項目,人們通常按分支來安排布局:
/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
……或者按項目:
/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
如果項目不是密切相關,而且每一個是單獨被檢出,那么按項目布局是合理的。
對于那些你想一次檢出所有項目,或需要將它們打成一個分發包的相關項目,按分支來布局通常比較好。這種方式你只要檢出一個分支,而且子項目之間的關系也比較清楚。
SVN分支策略介紹
版本控制系統的一個特性是能夠把各種修改分離出來放在一個單獨的開發線上。這條線被稱為分支。分支經常被用來試驗新的特性,而不會干擾正在修改編譯器錯誤和bug的主開發線。當新的特性足夠穩定之后,開發分支就可以合并進主分支里(主干)。
版本控制系統的另一個特性是能夠標記特殊的版本(例如一個發布版本),所以你可以在任何時候重新建立一個特定的構建或環境。這個過程被稱作標記。
有了分支和標記的概念也就明白了為什么說使用推薦的布局方式會使以后的操作方便很多。
SVN中沒有用于建立分支和標記的特殊命令,但是可以使用所謂的“Cheap copies”來代替?!癈heap copies”類似于Unix里的硬連接,它意思是創建一個內部的鏈接而非復制一個完整的版本庫。這個鏈接指向一個具體的版本樹。這樣分支和標記可以迅速被創建,并且幾乎沒有在版本庫里占據任何額外的空間。
下面是常用的SVN的分支策略模式,也可能是比較適合CG中Device代碼維護的一種策略模式。當然最合適的模式需要經過一段時間的使用,不斷調整后才能得到。
其中
Trunk: 主開發分支,所有最新的代碼都在這里
Tags: 一個里程碑版本(名字:”1.0”,”1.1”,”2.1”,”EMC-1.0”,”EMC-1.1”,”OEM-1.0”…),用于存放發布的版本
Bugfix branch: 修正bug的分支(名字:”bugfix-1.x”,” EMC-bugfix-1.x”, “OEM-bugfix-1.x”),一般從某個tag拉出來,用于解決這個大版本的所有bug
Customize function dev branch: 特殊需求的開發分支(名字:”OEM-dev”,”Japan-dev”,…),用于為某個客戶的特殊需求開發一個版本。
SVN分支管理的具體使用
SVN中使用很重要的一方面是,開發支線和主干的管理。
開發支線中可以試驗一下新特性,待新特性開發完畢后再合并到主干中。這樣需要使用到SVN的兩個功能:“分支”和“合并”。在使用“分之”后需要按照提示使用“切換”命令切換到分支中進行新特性的編碼和測試。
“合并”時有一個注意的事項就是總是在工作副本進行的。如果你想要合并修改到分支,你必須檢出該分支的工作副本,并且從這個工作副本使用“TortoiseSVN→合并”來調用合并向導。
一般情況下,將branch調試完畢后的代碼合并到trunk,可以選擇這樣的操作:首先,將當前新特性所有的更改提交;然后,通過“切換”命令返回到trunk目錄;最后通過“合并”命令將剛才分支中的新特性添加到主干中。
通過日常分支和合并的管理,既可以使團隊并行開發,又可以使團隊在整合時能夠方便快捷的達到目的。
SVN版本分支圖
SVN版本分支圖可以指示用戶從哪里開始有了分支/標記,說明某條支路是單獨的分支還是樹型結構,從而使用戶進行更清晰的分支/標記管理。
?
SVN分支管理策略的應用
分支管理策略在實際使用中還需要具體問題具體分析,生搬硬套往往會出現問題。分支管理策略雖好,但也不適用于所有的使用情景。
如果不同的項目屬于并列的內容,需要單獨開發維護,屬于“橫向”內容的擴充,則可以在版本庫中已添加文件的方式將項目添加進來。
/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
……
這樣就屬于項目的添加。需要項目管理者在版本庫中添加新的項目,項目的開發維護者從版本庫中更新下來,再繼續完成修改或者是新內容的添加。
對于同一個項目,存在著從無到有,從不穩定到穩定的“縱向”維護的問題,以及各種版本發布,修復bug升級問題。
這樣使用SVN的分支管理策略就顯得非常重要了。
概括來說,對于同一項目的“縱向”增長使用分支管理策略;對于“橫向”增長問題,沒有必要使用分支管理策略,如果使用只會增加管理的復雜度。
總結
- 上一篇: html等宽字体汉字,等宽字体(Mono
- 下一篇: vim字符串全局替换