分支 (版本控制)
在版本控制與软件配置管理中,分支(英語:)是由某個版本的程式碼或軟體物件中建立複製版本,在分支出來後的兩個版本,可以獨立進行修改。
分支會形成樹狀結構,也被稱為,或。原始的版本,稱為父分支(parent branch)或是上游分支(upstream branch)。分支出來的複本,稱為子分支(Child branches)。作為最源頭,沒有父分支的分支,稱為主幹(trunk)或主線(mainline)[1]。
在分散式版本控制系統(例如Darcs)中,分支和存放版本的倉庫(repository)是一樣的。在這類系統,複製一份倉庫的複本和分支是一樣的。
軟體進行分支後,之後有可能會再將分支合并回父分支。常見的是將修改內容合併回主幹(有可能主幹不是父分支)。若某個分支不打算合併(例如曾由第三方授權,授權內容不相容,因此已重新授權,或是用在不同用途上),會稱為分叉(fork)。
使用分支的原因
建立分支可以讓各部份的程式碼可以平行開發[2]。大型專案會有不同的參與者,例如開發人員、build管理者,以及软件质量保证人員等。甚至需要維護針對不同作業系統的不同發行版。分支可以讓參與者在不破壞基礎代碼穩定性的情形下,將修改和基礎代碼隔離,再進行程式錯誤修正、新機能開發[3]、軟件版本整合等。這些修改可以在測試完成後,再合併回主線。
開發分支
開發分支(development branch)或開發樹(development tree)的程式碼是指正在软件开发,但還沒有正式發行的程式碼。若在开放源代码社群中,「正式發行」不是那麼直覺,因為任何人隨時都可以取出(check out)需要的版本,不管是不是在開發分支中都可以取出。一般而言,最終會是下一個主要版本的分支就是開發分支。不過也常常同時開發多個機能,因此存在多個開發分支。
陰影分支或魔術分支
在cvc(開源軟體,整合rPath開發的版本控制系統)及CVSNT中,可以針對上游的分支建立陰影分支或魔術分支,在小修改的維護上比較方便。
參考資料
- Berczuk, Steve; Appleton, Brad. . Addison-Wesley. 2003 [2007-05-24]. ISBN 0-20174117-2. (原始内容存档于2020-10-30).
- Appleton, Brad; Berczuk, Stephen; Cabrera, Ralph; Orenstein, Robert. (- PDF). Hillside. 1998-02-08 [2009-08-12]. (原始内容存档 (PDF)于2020-10-25).
- Bailey, Derick. . Branch-Per-Feature Source Control. Los techies. 2009-07-15 [2009-08-12]. (原始内容存档于2020-07-29).
- . [2020-07-29]. (原始内容存档于2020-12-20).
- . [2020-07-29]. (原始内容存档于2018-07-01).
- . [2020-07-29]. (原始内容存档于2020-12-14).