基于主干的开发发布和修复问题
Trunk-based development release & hotfix questions
我无法理解如何处理以下情况:
- 功能 A 提交到
master
作为提交 A
。
- 我们已准备好发布
v1.0.0
,因此我们将提交 A
标记为 v1.0.0
并从中创建一个发布分支 rel-1.0.x
用于 QA。
- 功能 B 提交
master
作为提交 B
。
- QA 批准
v1.0.0
,我们部署并删除 rel-1.0.x
分支。
- 我们已准备好发布
v2.0.0
,因此我们将提交 B
标记为 v2.0.0
并从中创建一个 rel-2.0.x
分支用于 QA。
- 在生产中发现一个错误 (
v1.0.0
),必须立即修复和部署。
此时我不确定我们应该如何处理。如果错误在主干中,我们可以从主干创建一个修补程序分支,修复错误并合并到主干中。然后,从 v1.0.0
创建一个 rel-1.0.1
分支,从主干中挑选修复,将其标记为 v1.0.1
并部署。
现在我觉得奇怪的是 v1.0.1
提交不是 master
中的原样,因为它是从 master
中挑选出来并在 [=25= 中标记的] 分支。此外,如果 rel-2.0.x
中也需要修复,那么我们应该如何处理呢?我们是否应该再次从主干中挑选错误修复并将其标记为不同的版本,例如 v2.0.1
?
这是我在上面做的那种图表(请注意,v1.1 代表上面文本的 2.0 版,它是 Second feature A fix
在准备 v1.1
发布。):
回到这个问题,我的担忧似乎没有根据,versioning/tagging 方法以及上述问题中描述的工作流程是可以接受的,并且在实践中工作得很好。
不过,我面临的一个挑战是 master 与生产环境的差异越来越大。发生这种情况的原因有很多,例如在理论上已准备好发布的 master 中的提交,但不知何故没有进入生产。我处理这个问题的方法是在生产中不断地重新处理提交树,以便将分歧留在最前面。
我无法理解如何处理以下情况:
- 功能 A 提交到
master
作为提交A
。 - 我们已准备好发布
v1.0.0
,因此我们将提交A
标记为v1.0.0
并从中创建一个发布分支rel-1.0.x
用于 QA。 - 功能 B 提交
master
作为提交B
。 - QA 批准
v1.0.0
,我们部署并删除rel-1.0.x
分支。 - 我们已准备好发布
v2.0.0
,因此我们将提交B
标记为v2.0.0
并从中创建一个rel-2.0.x
分支用于 QA。 - 在生产中发现一个错误 (
v1.0.0
),必须立即修复和部署。
此时我不确定我们应该如何处理。如果错误在主干中,我们可以从主干创建一个修补程序分支,修复错误并合并到主干中。然后,从 v1.0.0
创建一个 rel-1.0.1
分支,从主干中挑选修复,将其标记为 v1.0.1
并部署。
现在我觉得奇怪的是 v1.0.1
提交不是 master
中的原样,因为它是从 master
中挑选出来并在 [=25= 中标记的] 分支。此外,如果 rel-2.0.x
中也需要修复,那么我们应该如何处理呢?我们是否应该再次从主干中挑选错误修复并将其标记为不同的版本,例如 v2.0.1
?
这是我在上面做的那种图表(请注意,v1.1 代表上面文本的 2.0 版,它是 Second feature A fix
在准备 v1.1
发布。):
回到这个问题,我的担忧似乎没有根据,versioning/tagging 方法以及上述问题中描述的工作流程是可以接受的,并且在实践中工作得很好。
不过,我面临的一个挑战是 master 与生产环境的差异越来越大。发生这种情况的原因有很多,例如在理论上已准备好发布的 master 中的提交,但不知何故没有进入生产。我处理这个问题的方法是在生产中不断地重新处理提交树,以便将分歧留在最前面。