所以我曾经认为我在svn上还算不错,但是这个特殊的问题阻碍了我……
我有一个主题分支,在那里我添加了一些文件,并做了一个小的修改。我合并了主干中从我的主题分支被剪切到head via时发生的所有更改:
使用分支作为我的工作副本的svn merge ^/trunk@revN ^/trunk@HEAD。
我将这些更改提交到分支,现在我的分支和主干之间的区别看起来像这样:
> 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 '.':
...上面的...指出了我遗漏了细节的地方。它只是一堆更新和冲突的文件,不应该接近我的变更集。
为什么merge在这种情况下试图跨不同的修订范围应用合并和反向合并,而我指定的所有内容都是“给我主干和分支之间的差异,并将其合并到我的主干WC中”?它不应该对修订范围做任何事情。您知道为什么会发生这种情况吗?我需要在svn命令中修改哪些内容才能纠正它?
我的svn客户端是svn版本1.6.15 (r1038135),svn服务器是1.4.5 (r25188)。服务器版本不在我的控制范围之内,因此使用旧风格的合并,而不是使用svn合并跟踪。
发布于 2011-05-11 06:42:23
也许这是在工作中的“橡皮躲避”,但这里的答案是我需要为我的合并命令指定--ignore-ancestry。否则,1.6 svn客户端将隐式地尝试以我的名义使用合并跟踪进行合并,即使服务器仍然是1.4并且不支持合并跟踪。
https://stackoverflow.com/questions/5956615
复制相似问题