對於常見的Git類型的代碼庫而言,有兩種主流的託管平臺,一種是Gerrit,另一種是類Github的工作流程(包括Bitbucket, Gitlab)。
對於Gerrit的模式來說,小團隊(20人以內的),可以直接在master上提交(比如Martin Flower一開始說的每天在mailine上提交),gerrit只是生成一個需要merge的patch.而Github一般而言只需要在master上release tag即可。另外單獨創建一個新的dev分支,用於每天的代碼提交,充當了部分master的職能。比如【3】提出的模型。
對於Web開發而言,如果一個UI feature 的週期還長於當前release cycle的週期,那麼可以使用feature toggle的技術去處理。這樣減少了維護一個長週期feature分支的成本,並且大家仍然可以在mailine上提交代碼去進行持續集成。feature toggles應該是 short-lived,否則也有可能會造成生產效率的下降。【4】
1.Martin Flower給持續集成的定義:
https://www.martinfowler.com/articles/continuousIntegration.html
2.比較全的一篇,描述了短週期,長週期以及按照模塊和特性來工作的軟件開發模式對應的分支模型。
https://www.cnblogs.com/itech/archive/2011/08/01/2123354.html
3.常見的一種github模型:
http://nvie.com/posts/a-successful-git-branching-model/
4.feature toggle
下面這篇講了feature toggle的使用場景,存儲方式,pros and cons.
https://dev.to/samueleresca/continuos-delivery-using-feature-toggle