[英]handling release branches in gitflow
我工作的公司正在使用 gitflow。
我們遵循每個功能分支的方法,其中實現、測試各個功能,然后 PR'd 到開發中。 當需要發布時,我們會在開發之外創建一個發布分支——我們會在發布分支上觸發構建並將其部署到測試環境中。 由於合並到開發中的多個功能分支,可能存在一些集成缺陷。 這些直接針對發布分支解決。 一旦我們對發布分支的 state 感到滿意,我們就會將其部署(與 QA 簽署的完全相同的構建)到 PROD。
在這個階段,我們需要讓我們的發布分支代碼回到 develop 和 master,這兩個都是受保護的分支。 假設有一些針對發布分支的提交,我們需要做 2 個 PR,即一個用於 release->develop,一個用於 release->master。
幾個問題:
謝謝。
tl;dr:理想情況下,執行例行 Git Flow 分支合並時不需要代碼審查。 相反,您將確保對 Git Flow 共享分支的所有提交都經過代碼審查。 請注意,此解決方案回答了您的兩個問題。
詳細信息:在您的示例中,將release
合並到master
或將release
合並到develop
(理想情況下)不需要人工干預,理論上可以自動化1 。 不過,為了實現這一點,您確實需要對 go 到release
的所有提交進行代碼審查,這意味着您需要調整工作流程的這一部分:
由於合並到開發中的多個功能分支,可能存在一些集成缺陷。 這些直接針對發布分支解決。
如果您從release
創建功能分支並通過正常的代碼審查將它們 PR 到release
分支,那么稍后當需要將release
合並到另一個共享 Git Flow 分支時,您可以放心, release
分支上的所有代碼都已經是代碼經過審查,合並成為常規合並,不需要進行深入審查。
許多 Git SCM 工具都有受保護分支的概念,需要使用 PR 才能將代碼合並到其中。 這里的建議是除了保護develop
和master
之外,你還應該保護你的release
和hotfix
分支。
提示:在完成release
分支時, Git Flow 建議將release
分支合並到master
和develop
中。 然而,有一種稍微更有效的機制可以實現相同的state ,但有一些額外的優勢。 調整是先將release
合並到master
,然后再將master
合並到develop
。 這樣做的好處是master
上的新合並提交也將在develop
上,這意味着develop
比master
“領先”。 當需要將下一個release
分支合並到master
時,從提交 ID 的角度來看,它將完全是最新的,這意味着您可以進行快進合並。 當然,您仍然會像 Git Flow 推薦的那樣使用--no-ff
合並到master
中,但是知道您可以快進可以肯定地告訴您合並后master
的 state 與您測試的release
分支相同。 如果您不這樣做,則必須比較狀態以確保您不會破壞您忘記合並回release
或develop
的master
上的修補程序。 另一個小好處是,如果不這樣做,如果您連續發布了多個版本,那么第一次進行hotfix
時,您將第一次將一堆舊的合並提交從master
合並到develop
中,這有點令人困惑看到那個。
1 Git 流共享分支合並通常可以自動完成。 只有在存在非確定性合並沖突的情況下,人才需要介入。 不確定性沖突的一個例子可能是將release
或master
向下合並到develop
時,在創建release
分支后,兩個分支中的某些文件都發生了變化。 請注意,某些沖突可能被認為是確定性的,並且仍然可以通過邏輯自動解決,例如在兩個分支中修改的版本文件,並且解決機制是事先已知的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.