Search code examples
svnsvn-merge

svn merge with --reintegrate complains about missing ranges but mergeinfo seems correct


I have a project with with the following structure

^/project/trunk
^/project/branches/mybranch

where current HEAD is revision 1048. The branch was copied from trunk in r523. trunk has been merged to mybranch with the result being r1048. The mergeinfo on ^/project/branches/mybranch gives

/project/trunk:523-1047

and the mergeinfo of trunk has no record mentioning anything from ^/project/branches/mybranch. Actually in reality both trunk and branches also hold mergeinfos from branches parallel to mybranch but those mergeinfos appear as absolutely identical in both outputs.

Now I go into my working copy of trunk and try to issue

svn merge --reintegrate ^/project/branches/myproject

I get an error message that says:

svn: Reintegrate can only be used if revisions 523 through 1048 were previously merged from file:///home/svn/project/trunk to the reintegrate source, but this is not the case:
  project/branches/mybranch/src
    Missing ranges: /project/trunk/src:523-1047

That is weird because the mergeinfo on my branch folder tells me that 523-1047 have been correctly merged from trunk to branch. What is the deal with that subfolder? src is a directory that obviously exists in both trunk and branch.

I think that is where something is fishy. If I look into the mergeinfo of mybranch/src via svn pg svn:mergeinfo ^/project/branches/mybranch/src@HEAD I get nothing at all. If I look at the trunk/src however (svn pg svn:mergeinfo ^/project/trunk/src@HEAD) I get

/project/branches/mybranch/src:784

So it seems as though someone did a cherry-pick from branch to trunk there. However this does not appear in the trunk folder itself.

Is that where the trouble lies? And most importantly: how can I cure it??


Solution

  • Is that where the trouble lies?

    Yes, exactly - merge subtree later always confuse reintegration

    And most importantly: how can I cure it??

    Remove mergeinfo from /project/trunk/src