GitFlow分支策略 - 多个版本发布。

3

目前,我们正在使用 GitHub flow(特性分支)策略。然而,这种策略存在一个问题,有时候某些功能在发布队列中排队等待。例如:

  1. 我已经将我的特性合并到开发(或主要,我们仅有的)分支,并部署到测试环境进行测试。
  2. 同时,我们想要开发或修复一些高优先级的错误/功能。但是,如果没有从开发分支还原早期的代码,我无法做到这一点。

为了解决这个问题,我正在尝试实现 GitFlow 分支策略。但是,我认为可能会出现与上述类似的问题,如下所述。

  • 我创建了一个新的特性分支,完成了我的开发,并将其合并到 develop 分支中。
  • 我们将几个更多的特性合并到 develop 中。
  • 创建一个新的发布分支(称为 release-A),然后将其部署到测试环境进行测试。
  • 与此同时,又有一个高优先级的新功能请求。
  • 现在,如果我从最新的 develop 分支创建一个新分支,它就会包含其他特性(release-A),我不想将其部署到生产环境(或合并到主分支)。

问题:

  • 相比于从最新的develop分支进行分支,我应该从已经在PROD中的提交中进行分支吗?
  • 如果是这样,我应该从功能分支创建一个发布吗?
  • 如何在测试中部署此功能,以便可以并行测试或同时测试(发布-A和此新功能)。后一点不是很重要。

注意: 我正在使用Microsoft Azure Data Factory,因此我需要合并一些更改到develop分支(与Azure Data Factory相关),否则我将无法发布这些更改(无法创建ARM模板以部署到其他环境)。

3个回答

1

请查看https://nvie.com/posts/a-successful-git-branching-model,其中演示了分支模型的图形化界面。

如果您的新高优先级功能应该中断ReleaseA并直接进入生产环境,则我会将其视为热修复,并从最新的生产版本创建一个热修复分支。在那里开发功能并进行测试,然后将其合并到主分支和开发分支中。

功能分支是仅从开发分支中分支出来的临时分支。因此,您永远不会从功能分支创建发布分支或直接将功能分支合并到生产/主分支中。


0
现在,如果我从最新的develop分支中分离出来,它会有其他功能(release-A),但我不想部署到生产环境。
问题在于你只有一个develop分支用于多个发布版本:这个“集成”分支(用于整合多个功能分支)变得混乱,因为最终会有一些“你不想要的功能”。
最好的做法是创建多个临时的集成分支,即为特定发布版本创建一个新的develop分支(一旦完成,就创建一个新的集成/develop分支来整合新的功能集,或者之前发布版本未包含的旧功能分支)。
一个很好的例子是gitworkflow(一个词)

0
你有没有考虑过使用 cherry pick 从 develop 分支选择特定的提交到 release 分支?这样可以避免不需要的功能。
在准备发布时,从 develop 分支检出 release 分支。
一些新功能/错误修复仍然可以合并到 develop 分支,但你可以选择 cherry pick 哪些功能要包含在你的发布中。 查看可视化图表

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接