2011-02-08 121 views
2

考虑以下情况:如何合并bug修复分支到主干和分支释放

  • 发展干线主要是做。
  • 在修复复杂错误或开发新功能(最初不稳定)时使用分支。
    正常情况下,一旦开发完成,这些分支就会合并到主干中。
  • 1个分支用作当前发行分支(比如说当前的“R-1.0”)。
  • 标签用于发布(将是“R-1.0.0”)。

现在一个复杂的错误,这是在躯干以及在当前版本1.0.0必须固定:

  1. 的分支“BG-1”,从主干将被创建。
  2. 该错误将在此分支中得到解决。
    与此同时发展将继续在后备箱。

你现在如何继续将分支重新集成到主干和“R-1.0”?

  • 将中继线合并到“BG1”中,然后将“BG1”重新整合到中继线中,然后重新整合到“R-1.0”中。
    =>这不可能是解决方案,因为这种方式“R-1.0”会收到从发布版1.0开始的所有东西,这不是目标。
  • 尝试将“BG1”重新整合到主干中,然后重新整合到“R-1.0”中,而不合并主干。
    =>这也不能工作,因为其他不属于版本1.0的更改已经是“BG1”分支的一部分。

有没有解决这个问题的方法?
我看到的唯一解决方案是从“R-1.0”启动“BG1”,而不是首先启动“trunk”。如果是这样,这是否意味着对于每个错误修复分支,开发人员必须找到包含此发行版分支中的错误和分支的最早支持版本?

更新
拼尽全力发展和树干的做法源于this answer by "Jim T"这是一个概念,我真的很喜欢。

回答

6

我会建议将树干合并到BG1中,然后将BG1重新合并到树干中。然后,您可以将一系列修订合并到R-1.0中。将BG1重新集成到主干的提交应仅包含错误修正,因此您可以将其合并到R-1.0。或者你可以将特定的提交合并到BG1来修复你的bug。

根据自R-1.0以来干线的变化程度,您可能必须在提交之前手动编辑R-1.0,以便将更改应用于旧代码。维护旧版本的性质就是这样。

+0

[+1]我做了一些测试,并得出了与您的建议相同的结果。将BG1集成到主干中似乎是最容易的,然后只将此版本合并到R-1.0中。让我看看是否有其他建议,如果没有,我会接受你的答案。 – Marc 2011-02-08 20:58:54