【发布时间】:2009-02-20 19:12:45
【问题描述】:
我的开发团队遵循 Subversion 中不稳定的主干、稳定的分支模式。每个月,都会从主干创建一个稳定的发布分支。有时,需要将更改从这些发布分支合并到后续发布分支,并最终合并到主干。
问题在于,在过去的几个月里,所有这些分支的合并都不正确。由于开发人员误解了他们需要合并哪些修订,许多修订被跳过。
不正确的合并历史示例如下所示:
------------------------------------------------------------------------
r57 | Bob | 2008-11-27 04:02:46 -0600 (Thu, 27 Nov 2008) | 1 line
action:merge; origin:branches/1; target:branches/2; range:28-55
------------------------------------------------------------------------
r28 | Alice | 2008-11-25 10:14:00 -0600 (Tue, 25 Nov 2008) | 1 line
action:merge; origin:branches/1; target:branches/2; range:10-25
在这里,Bob 应该从 r25(Alice 的合并结束)开始他的合并,而不是 r28。
所以现在我有 6 个分支自 10 月初以来以这种方式错误地合并。这会导致主干中的测试失败和许多回归。所以现在,我想返回并合并所有错过的更改。
有没有一种简单且正确的方法来做到这一点?我目前的计划是回到起点,开始在每个间隙中合并。因此,在示例中,我会将修订版 25-28 从分支 1 合并到分支 2。但我预计会有很多冲突,我希望有更好的方法。
确实没有快速简便的解决方法。强制开发人员在 Subversion 中维护多个并发分支是容易出错且耗时的。在这种情况下,许多开发人员的 checkin cmets 无论如何都是不准确的。所以真的没有办法回去追溯他们的脚步。相反,我们将全面测试最近的分支并关闭其余分支。
【问题讨论】:
-
这听起来确实是一个可怕的政策,而且容易出错。我一直试图坚持“仅在必要时和尽可能晚的分支”的概念。我确定我遗漏了一些东西,只是没有遇到按你的方式做的需要,但对我来说,这听起来像是在招惹麻烦。