[英]Advice on git release management & confusion
我們是一個由6名開發人員組成的團隊,並且已經從TSVC(在TFS2010上)過渡到git(在Gitlab上)已有近一年的歷史了。 我們采用了http://nvie.com/posts/a-successful-git-branching-model中的發布模型,該模型正在運行,但有時會努力適應。
背景:我們僅為1個獨家客戶維護一個內部網絡應用。 通常,我們有2種發行版本:
這兩種類型的發行版都只能在客戶批准后才能部署到生產中。
我們有4種分支, master
, release
, develop
和topic分支。 一旦發布准備好了,我們就會從master
分支出一個新版本。 對於CR,我們最初從分支develop
,雖然后來我們發現,這是相當多余的,因此,我們現在從分支master
。 主題分支是錯誤修復和小型CR,是正在進行的release
或master
分支的分支。 當我們將足夠的錯誤修正合並到release
分支中時,或者當需要發布緊急錯誤修正時,我們將准備release
該release
分支,並開始一個新的release
分支。 我們通常每兩周或每月在固定的工作日發布一次。 我們還通過在每個發行版中合並次要release
release
分支來更新主要release
release
分支。
我們使用Gitlab的CI在每次推送時構建我們的軟件包,並將最后構建的軟件包部署到我們的測試環境中,以供我們的測試團隊進行測試。 當release
分支穩定時,最終的軟件包將通過測試並獲得客戶批准的發布,然后將同一軟件包用於生產部署。
以下是我們的一些困惑。
release
分支的頂端進行部署,因此我們認為無需將其合並回master
。 將release
合並到master
release
的提交不是已部署的提交。 如果我們要使用最終的合並提交,那么我們將不得不再次經歷測試周期,這似乎是多余的。 我們還應該保持master
嗎? develop
分支似乎也不適合我們的工作流程,我們也應該刪除它嗎? 最后,似乎對我們有用的只是擁有次要和主要release
分支,但是我們想知道這是推薦的方法還是可以遵循的更好的發行模型。
我們與您進行相同類型的開發。
對於我們來說,Dymitruk的分支模型http://dymitruk.com/blog/2012/02/05/branch-per-feature非常理想。 簡而言之,它取消了development
和release
分支,僅使用master
, featureXXX
, qa
(預發行測試)和ci
(連續集成)分支,最后一個是技術性更高且相當可選的分支。
該系統嚴重依賴git rebase
和git rerere
,因此僅適用於git
(我不知道是否有其他VCS具有類似rerere
東西),並且非常干凈和強大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.