如何将bug修复分支合并到trunk和release分支

时间:2011-02-08 14:59:28

标签: svn merge tortoisesvn branch

考虑以下情况:

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

现在必须修复主干以及当前版本1.0.0中的复杂错误:

  1. 将创建来自主干的分支“BG-1”。
  2. 该错误将在此分支中修复 与此同时,发展将继续在后备箱中进行。
  3. 如何继续将分支重新集成到主干和“R-1.0”中?

    • 将行李箱合并到“BG1”,然后将“BG1”重新集成到行李箱中,然后再重新导入“R-1.0”。
      =>这不是解决方案,因为这样“R-1.0”会收到自1.0版以来在主干中开发的所有内容,而不是目标。
    • 尝试将“BG1”重新集成到行李箱中,然后在不合并行李箱的情况下重新进入“R-1.0”。
      =>这也无法正常工作,因为其他不属于1.0版的更改已经成为“BG1”分支的一部分。

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

    更新
    在主干中进行所有开发的实践起源于this answer by "Jim T",这是我非常喜欢的概念。

1 个答案:

答案 0 :(得分:6)

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

根据自R-1.0以来中继线的更改量,您可能需要手动编辑R-1.0才能使更改应用于旧代码。这就是维持旧版本的本质。