3

所以我有这个项目,在 2 个版本中同时进行工作,主干和分支 1。在某些时候,我被告知“不要再为 rel1 进行构建,在 rel2 中修复这些错误。” 因此,我在 branch1 中进行了错误修复,这些错误修复也适用于主干。后来我被告知“如果我们发布带有那些已知错误的 rel1,那将是一个很大的 PITA。请在 rel1 中也修复它们。”

所以,我的问题是(~/rel1 是主干的当前、未修改的工作副本。RevM、RevN 是分支 1 中的修订号,用于我想要合并回主干的一系列修订):

如果我做一个

cd ~/rel1
svn merge -r RevM:RevN ^/branch1 

它将如何影响以后svn merge --reintegrate从分支到主干?请记住,branch1 之前有修订,之后RevM会有更多修订RevN。特别是,当我最终重新集成时,是否会像我最初在 rel1 中完成修复并将它们合并到 rel2 一样,就像一开始就应该做的那样?

4

1 回答 1

7

从树枝到树干的樱桃采摘变化也总是让我心烦意乱。这是一个应该适用于您的情况的解决方案,诀窍是阻止精心挑选的更改再次合并到分支中。

cd ~/rel1
svn merge -r RevM:RevN ^/branch1
svn commit -m "cherry pick RevM:RevN from branch1 into rel1"

现在假设这个提交创建了 RevX。进入您的分支并使用该--record-only选项阻止此修订版将来进行合并操作。

cd ../branch1
svn merge -c RevX --record-only ^/rel1
svn commit -m "mark RevX as already merged to block it from future merge actions"

现在您应该能够像往常一样将进一步的更改从rel1tobranch1再次合并,并且在您完成后将您的分支重新集成到 rel1 中。

于 2012-07-20T23:01:41.077 回答