`svn merge` 与 `svn diff` 的结果不同

6

我曾经认为自己在svn方面还算不错,但这个问题却让我束手无策...

我有一个主题分支,其中添加了一些文件并进行了一次小修改。我通过以下命令将从我的主题分支创建时到HEAD期间发生的所有变更从trunk合并到了我的分支中:

svn merge ^/trunk@revN ^/trunk@HEAD ,并将该分支作为我的工作副本。

我将这些更改提交到了分支中,现在我的分支与trunk之间的差异看起来有点像这样:

> svn diff ^/trunk ^/branches/KULRICE-5050 --summarize
D       https://test.kuali.org/svn/rice/trunk/impl/src/main/groovy/org/kuali/rice/kim/impl/attribute/KimAttributeDataBo.groovy
M       https://test.kuali.org/svn/rice/trunk/kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RolePermissionBoTest.groovy
A       https://test.kuali.org/svn/rice/trunk/kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleResponsibilityActionBoTest.groovy
A       https://test.kuali.org/svn/rice/trunk/kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleBoTest.groovy
...

换句话说,没有我没预料到的情况。这些是我在我的分支中更改的文件。
然后,我尝试通过以下方式将分支合并到主干: svn merge ^/trunk ^/branches/KULRICE-5050,其中主干作为我的工作副本。但是,与diff --summarize显示的修改文件不同,我最终看到了以下内容:
> svn merge ^/trunk ^/branches/KULRICE-5050
--- Merging differences between repository URLs into '.':
D    impl/src/main/groovy/org/kuali/rice/kim/impl/attribute/KimAttributeDataBo.groovy
U    kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RolePermissionBoTest.groovy
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleResponsibilityActionBoTest.groovy'
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleBoTest.groovy'
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleResponsibilityBoTest.groovy'
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleMemberBoTest.groovy'
A    kim/kim-impl/src/main/java/org/kuali/rice/kim/impl/role
...
...
Skipped 'kim/kim-api/src/main/java/org/kuali/rice/kim/api/role/RoleResponsibilityActionContract.java'
Summary of conflicts:
  Skipped paths: 38
--- Merging r20279 through r20321 into '.':
...
...
Summary of conflicts:
  Tree conflicts: 171
  Skipped paths: 33
--- Reverse-merging r20321 through r20279 into '.':
...

上述代码中的“...” 表示我省略了细节。这只是一些文件更新和冲突,与我的变更集无关。
为什么在这种情况下合并会尝试在不同的修订范围内应用合并和反向合并,当我所指定的只是“给我主干和分支之间的差异,并将其合并到我的主干WC”? 它不应该在修订范围内进行任何操作。 你有任何想法为什么会发生这种情况,以及我需要修改哪些svn命令来纠正它?
我的svn客户端是svn,版本为1.6.15(r1038135),svn服务器是1.4.5(r25188)。由于服务器版本超出了我的控制范围,因此使用了旧版的合并方法,而不是使用svn合并跟踪。
1个回答

5
也许在工作中这被称为“橡皮鸭调试法”,但是我需要在我的合并命令中指定--ignore-ancestry。否则,1.6版本的svn客户端会尝试隐式地进行带有合并跟踪的合并操作,即使服务器仍然是1.4版本且不支持合并跟踪。

1
谢谢。我正在处理完全相同的情况。我错过了“--reintegrate”。 - FlipMcF

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