2009-02-20 47 views
1

我的开发小组遵循Subversion中不稳定的主干,稳定的分支模式。每个月都会从主干创建一个稳定的发布分支。有时候,需要将这些更改分支中的更改合并到后续发布分支中,最后将其更改为主干。合并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 

这里,鲍勃应该从R25,爱丽丝的合并结束了,而不是R28,开始了自己的合并。

因此,现在我有6个分支机构自10月初以来就以这种方式被错误地合并了。这会导致测试失败以及主干中的许多回归。所以现在,我想回去并合并所有错过的更改。

有没有一个容易和正确方式做到这一点?我目前的计划是回到开始,并开始在每个差距合并。所以在这个例子中,我将合并版本25-28从分支1合并到分支2.但我期望有很多冲突,我希望有更好的方法。

真的没有快速简单的解决方法。迫使开发人员在Subversion中维护多个并发分支是很容易出错和耗时的。在这种情况下,无论如何,许多开发者的签入评论都是不准确的。所以真的没有办法回头追溯他们的步骤。相反,我们将全面测试最近的分支并关闭其余分支。

+0

这真的听起来像一个可怕的政策和容易出错。我一直试图坚持“只在必要时,尽可能晚”的概念。我确定我错过了一些东西,而没有遇到需要按照你的方式去做,但对我来说,这听起来像是在招惹麻烦。 – Tim 2009-02-20 21:55:59

回答

1

如果开发人员正在检查其在分支机构中的更改,是不是可以在合并之前创建新的分支,将正确合并更改,然后将其新代码合并到?也许我错过了一些东西。

我并不熟悉各种Subversion模式,但是我的公司遵循一个流程,即我们的trunk始终稳定,开发人员无法更改它(只能更改分支)。因此,我们从来没有合并过问题,我们在SVN中拥有超过10,000个修订版本和100个分支机构。我只提出这个问题,因为如果有多个开发人员合并问题,听起来您的流程/模式中存在重大缺陷。

+0

我们刚刚讨论了两种不同的分支技术。我不得不说他们每个人都有自己的优点和问题。与其他源代码控制软件合作后,我认为Subversion可以做得更好,但我不确定如何。 – staticsan 2009-04-15 23:03:14

0

那么,要获得一切你可以合并到URL没有特定的修订。如在:

cd /path/to/working/copy/of/stable/brunch 
svn merge https://company.com/repo/project/branch/stable https://company.com/repo/project/trunk 

这样你就会从你忘了融合到稳定的树干中得到一切。审查,恢复你不需要的东西,然后提交。