6

So I used to think I was halfway decent with svn, but this particular problem is thwarting me...

I've got a topic branch where I've added some files and made one minor modification. I merged all changes from trunk that occurred from the time my topic branch was cut until head via:

svn merge ^/trunk@revN ^/trunk@HEAD with the branch as my working copy.

I commit those changes to the branch and now the different between my branch and trunk looks kind of like this:

> 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
...

In other words, nothing I didn't expect. These are the files I have changed in my branch.

I then try to merge the branch down in to trunk via:

svn merge ^/trunk ^/branches/KULRICE-5050 with trunk as my working copy. Instead of having those files modified that diff --summarize showed I end up seeing the following:

> 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 '.':
...

The ... above indicate places where I've left out the details. It's just a bunch of updates and conflicts of files that should be nowhere near my changeset.

Why on earth is merge in this case trying to apply a merge and a reverse merge across different revision ranges when all I've specified is 'give me the diff between the trunk and branch and merge that into my trunk WC'? It shouldn't be doing anything with revision ranges. Do you have any ideas why this is happening and what I need to modify in my svn commands to correct it?

My svn client is svn, version 1.6.15 (r1038135) and the svn server is 1.4.5 (r25188). The server version is out of my control, hence the older style of merging instead of using svn merge tracking.

1 Answer 1

5

Perhaps it was "Rubber Ducking" at work, but the answer here is that I need to specify --ignore-ancestry to my merge command. Otherwise, the 1.6 svn client attempts, implicitly, a merge with merge tracking on my behalf even though the server is still 1.4 and doesn't support merge tracking.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you. EXACTLY the same scenario I'm working with. I miss --reintegrate

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.