【问题标题】:Subclipse merge issue - Dry run not matching with merge resultsSubclipse 合并问题 - 试运行与合并结果不匹配
【发布时间】: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


    【解决方案1】:

    好的,我想通了,或者至少为我的情况解决了这个问题。问题是因为在我的分支上我错误地将 r80 从主干合并并提交为 r106。然后我做了 Team > Revert > last commit 来恢复这个合并提交并将它检查为一个新的提交 r107。

    这有两个问题。首先,这不是在 SVN 中恢复合并提交的最佳方式。谷歌了解更多详情。

    第二个问题是当您将这些更改(在多个提交中)合并回主干时,SVN 将尝试将每个提交一个接一个地应用到主干。当我通过合并 r80 弄乱了分支上的 r106 时,由于文件的祖先冲突,SVN 对更改感到困惑。为了避免这种情况,并告诉 SVN 不要担心祖先,只需将我的分支中的差异/更改合并到主干,请检查合并窗口中的“忽略祖先”选项。这为我解决了这个问题。

    另外说明一下,在 SVN 合并中,Dry Run 的结果相当于在文件之间运行 Diff。但是当你进行 Merge 时,它​​会查看文件的祖先,并一一引入每个提交来进行 Merge。因此,结果可能并不总是相同的。 SVN 文档中有更多详细信息。

    这是我从我的经验中理解的,并在此处发布此作为答案,因为我没有收到任何其他回复我的帖子。如果我不完全正确,请添加任何 cmets。

    【讨论】:

      【解决方案2】:

      Subclipse 合并对话框在 Subversion 1.5 和合并跟踪的引入之前就没有工作过。我建议您安装包含在 Subclipse 更新站点上的 CollabNet Merge Client 插件,看看您是否得到相同的结果。

      如果安装了这个客户端,Team > Merge 选项应该会弹出一个向导。

      【讨论】:

      • 感谢您的评论,但这并没有帮助。我还发现 subclipse 比 CollabNet 更友好。 YMMV
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多