【发布时间】:2012-03-13 00:44:26
【问题描述】:
我在 Eclipse 中使用 Subclipse 1.6x 插件。让我先解释一下场景:
假设我的项目主干具有修订版 r1 到 r100。 在修订版 r100 中,我创建了一个分支并开始将 r101 提交到 r105。 此时,我想我会从主干中引入任何更改,以便更新我的分支。
但由于合并错误,我最终将 r80 从主干合并到我的分支并将其提交为修订版 r106。所以我在分支中恢复我在 r106 中的更改,并再次提交 r107 到这个分支。
在此期间,主干中有 r108 和 r 109 的提交。 现在,在恢复我在 r106 中的错误提交后,我正确地将所有从主干到 r109 的更改引入到我的分支(通过合并),以便我的分支是最新的,并将其作为 r110 提交到我的分支。
一切都很好。现在我决定我不需要分支所以让我将分支(r110)中的所有更改合并回主干。因此,在此合并之后,我应该看到的是我在分支中所做的更改(修订版 r 101 和该分支中的更高版本),因为我的分支与主干是最新的。
我做一个团队 -> 合并 From url 作为主干,To url 作为我的分支路径。 From 版本是主干 (r109) 中最后一个合并的版本,而使用的 To 版本是我的分支 (r110) 中的最新版本。我尝试了试运行并在合并窗口中创建了统一差异文件选项。它们看起来都正确,唯一更新的文件是我在分支中更改的文件。
现在我运行 Merge,合并结果与 Dry Run 不同。首先,它正确地合并了 Dry Run 显示的文件(这是我所期望的)。但它并不止于此。然后它会尝试这样的事情: --- 将 r80 合并到 r110 (可能是因为我在分支中合并错误???)
然后执行以下操作: --- 反向合并 r110 到 r80。
最终结果是合并我的所有更改,与试运行结果完全一样,加上对其他文件的大量更新/更改(我猜是由于第二次合并和反向合并)。
关于为什么会发生这种情况以及如何使合并结果正确/与试运行结果相同的任何想法?甚至创建的 Unified diff 文件也是正确的。
感谢您阅读这篇冗长的文章。
【问题讨论】:
标签: java svn version-control merge subclipse