热门问题
时间线
聊天
视角
分支 (版本控制)
来自维基百科,自由的百科全书
Remove ads
在版本控制與軟體組態管理中,分支(英語:Branching)是由某個版本的程式碼或軟體物件中建立複製版本,在分支出來後的兩個版本,可以獨立進行修改。
分支會形成樹狀結構,也被稱為trees,streams或codelines。原始的版本,稱為父分支(parent branch)或是上游分支(upstream branch)。分支出來的複本,稱為子分支(Child branches)。作為最源頭,沒有父分支的分支,稱為主幹(trunk)或主線(mainline)[1]。
在分散式版本控制系統(例如Darcs)中,分支和存放版本的儲存庫(repository)是一樣的。在這類系統,複製一份儲存庫的複本和分支是一樣的。
軟體進行分支後,之後有可能會再將分支合併回父分支。常見的是將修改內容合併回主幹(有可能主幹不是父分支)。若某個分支不打算合併(例如曾由第三方授權,授權內容不相容,因此已重新授權,或是用在不同用途上),會稱為分叉(fork)。
Remove ads
使用分支的原因
建立分支可以讓各部份的程式碼可以平行開發[2]。大型專案會有不同的參與者,例如開發人員、build管理者,以及軟體品質保證人員等。甚至需要維護針對不同作業系統的不同發行版。分支可以讓參與者在不破壞基礎代碼穩定性的情形下,將修改和基礎代碼隔離,再進行程式錯誤修正、新機能開發[3]、軟體版本整合等。這些修改可以在測試完成後,再合併回主線。
開發分支
開發分支(development branch)或開發樹(development tree)的程式碼是指正在軟體開發,但還沒有正式發行的程式碼。若在開放原始碼社群中,「正式發行」不是那麼直覺,因為任何人隨時都可以取出(check out)需要的版本,不管是不是在開發分支中都可以取出。一般而言,最終會是下一個主要版本的分支就是開發分支。不過也常常同時開發多個機能,因此存在多個開發分支。
陰影分支或魔術分支
在cvc(開源軟體,整合rPath開發的版本控制系統)及CVSNT中,可以針對上游的分支建立陰影分支或魔術分支,在小修改的維護上比較方便。
儲存庫的複製
在分散式版本控制中,可以複製整個儲存庫(以及其中的分支),之後再進行開發。Monotone(mtn)、Mercurial(hg)[5]及git[6]稱為clone。
相關條目
參考資料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads