[英]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.