使用Subversion合并跟踪,我能否重复地将分支合并到主干?

5
我们发布了1.0版本并在主干上继续开发2.0版本。我们创建了branches/1.0以修复与发布版本相关的错误。
计划如下:
  • 2.0版本在trunk/上继续开发
  • trunk/包含不应合并到branches/1.0的新功能,因此trunk从未合并到branches/1.0
  • 当在发布的应用程序中发现错误时,将在branches/1.0中进行修复。当修复集发布到生产环境时,将branches/1.0复制到tags/1.0.x,并将branches/1.0合并到trunk/
  • 想法是subversion合并跟踪应该跟踪更改,因此当我们将1.0.4修复合并到trunk时,1.0.3修复会自动跳过
这种方法是否存在问题?subversion合并跟踪是否能够正常跟踪更改?我还没有在实践中尝试过,大多数示例都有所不同(从主干合并到分支,我不希望这样做,因为大多数2.0开发不需要在1.0修复中)。merge-reintegrate是否适用于这种情况?
1个回答

6
是的,这正是它设计的目的。由于主干上的 svn:mergeinfo 属性正在跟踪已合并回来的 1.0 中的修复程序,因此第二次运行合并不会导致它再次获取那些修订版。
在预先跟踪合并之前,您必须跟踪您合并的修订版本,并确保您不尝试第二次合并它们。现在合并脚本更加简洁。

在这种情况下,我将永远不会执行svn merge --reintegrate,这是正确的吗? - user449236
如果您不想这样做,也可以不用。svn:mergeinfo 仍然会在正常合并过程中被填充。--reintegrate 是为了一次性完成整个分支的操作。合并跟踪应该仍然知道哪些项目已经被合并,并防止重复合并同一项目而导致冲突。 - Mike Miller
1
请记住,只有在需要合并不再开发的分支时,例如已完成的特性分支时,才使用reintegrate merge。当从补丁中移植修复程序到主干时,请使用“合并一系列版本”选项。 - Steve Goykovich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接