功能分支
2020 年 5 月 7 日
功能分支是一種原始碼分支模式,當開發人員開始開發新功能時,會開啟一個分支。她會在這個分支上完成所有功能開發工作,並在功能完成時與團隊其他成員整合變更。
在開發過程中,她可能會將團隊其他成員確認的變更合併到她的分支中,以減少功能完成後的整合工作,但她不會在那個時間點將她的變更放入共用程式碼庫中。這會導致兩個在不同功能分支上工作的開發人員,直到第二個人將他的工作合併到共用程式碼庫中之前,都不會整合他們的成果。
功能分支是一種廣受歡迎的技術,特別適合開放原始碼開發。它們允許在功能完成之前,將所有在功能上完成的工作與團隊的共用程式碼庫隔離,這讓所有與合併相關的風險都延後到那個時間點。然而,這種隔離會妨礙及早發現問題。更嚴重的是,它也會阻礙重構,而缺乏重構通常會導致程式碼庫的健康狀況嚴重惡化。
使用功能分支的後果在很大程度上取決於完成功能所需的時間。通常在一兩天內完成功能的團隊,能夠頻繁地整合,以避免延遲整合的問題。需要數週或數月才能完成功能的團隊,將會遇到更多這類困難。
進一步閱讀
有關功能分支的更多詳細資訊,請參閱我在管理原始碼分支的模式中發表的長篇文章。這篇文章將功能分支模式設定在軟體開發中使用分支的更廣泛架構中,說明在功能分支上工作的流程,討論與整合頻率相關的權衡,並探討持續整合的替代方案。
修訂
我在 2009 年 9 月 3 日於此網址發布了我的原始文章。當我發布管理原始碼分支的模式時,我將此頁面簡化為一個簡短的摘要。