我正在尝试选择最适合我们产品的Git工作流程。以下是参数:
- 我们一年会发布一些主要版本,最多可以说10个
- 我们同时有多个版本的产品处于活动状态(有些人使用v10.1,有些人使用v11.2,依此类推)
- 我们需要能够同时处理多个发行版(因此我们可以处理v12.1,但是当我们到达发行版末尾时,我们将同时开始处理v12.2)。
- 发现严重错误后,我们需要能够修复版本
到目前为止,这是我认为它可以工作的方式:
- 使用单个远程仓库
- 从master创建分支12.1
- 根据12.1创建要素分支,提交并合并回12.1,然后按入
- 一旦我们需要开始开发将来的版本,请基于12.1创建一个新的分支12.2。
- 从那时起,在使用12.1的功能时,从12.1创建分支,提交更改,然后合并到12.1和12.2中,
- 如果使用12.2的功能,请从12.2创建分支,提交更改,然后仅合并到12.2,
- 版本12.1完成后,将其合并到master和tag master分支中,并带有12.1
- 如果需要修补程序,请从需要该修补程序的最早的发行分支创建修补程序分支,提交更改,然后合并回该发行版和可能受影响的将来发行版的所有发行分支;如果最新的稳定版本分支受到影响,请将其合并到master。
我有一些担忧:
- 我不确定将修补程序从旧分支合并到新分支是否会很顺利,尤其是在存在许多重叠更改的情况下;在看起来有冲突的情况下,在每个分支中手动进行热修复会更聪明吗?
- 我看到的工作流模型似乎并没有使发行分支保持活跃,一旦完成,发行就被合并到主版本中,被标记并删除了。我的问题是,如果我拥有的只是master中的标签,那么我就不怎么管理发行版的状态,似乎更容易在分支中进行修补,然后有了发行版,我可以随时返回具有最新的修补程序(甚至可以在发行版中标记该修补程序)。不知道有什么办法可以使我回到master内,并以某种方式获取已应用修补程序的发行版副本并更新该标签。
考虑到我已经指定的要求,我对我可能忽略的事情或完成事情的更好方法表示了赞赏。