14.0.3 SVN merge, revert, remerge issue

I'm asked regularly to merge XSD and WSDL files from an analysts branch on SVN.  Yesterday I met with a very strange problem.  I'll go over the steps, maybe someone can reproduce the issue.

1. Merge the xsd analysts branch with the trunk, using 'Subversion Working Copies Information', 'Merge from...', 'Branch....'.  I pressed cancel when the commit screen popped up in order to have an SVN changelist 'merge from <branch>'.  Then move one file to another changelist (is required for a different job).

2. After a little while part of the branch in my changelist is committed, one file kept seperately is not.  Meanwhile new changes on the BRANCH have been done to the file I kept seperate.  And I'm asked to do a new analysts xsd merge.

3. Same scenario as point 1, but one file got merged by IntelliJ smart merge, namely the file I kept locally.

4. An analyst tells me the changes he's made to the branch are not ok, so I revert the whole thing.  This includes the file I used to keep in a seperate changelist.

5. Same scenario as point 1 BUT, the changes that were merged by IntelliJ are gone. Newer changes to that file are there, but the changes that were merged by IntelliJ are somehow 'forgotten'.  I assume IntelliJ still wrongly thinks that those changes are already on my local project, but that's just speculation.

Note: If I compare that file with the branch using 'SVN compare with branch' then the missing changes are registered.

This seems a very nasty bug, I would have broken the build on production day if I hadn't been paying attention closely and if I hadn't read that file before the ordeal.
Comment actions Permalink

I notice that this problem I'm describing may be worse than I thought.  And I'm already thinking it's quite bad actually.

A colleague of mine now has a similar problem.  He did a merge from branch, he reverted and tried again.  Instead of having the same result he gets a message that all files are up to date.  Which is obviously not the case.  When invoking 'compare with branch' you can actually see all the changes.

He's using 14.0.3 community, I'm using Ultimate.

Comment actions Permalink

Please check your local changes and ensure that the folder you merged to is also reverted. Probably you just reverted some necessary files, but not the folder, and so merge info about your merge is still stored in the svn properties of that folder. That is why repeating same merge does not give any results (as svn thinks all necessary revisions are already merged).

Comment actions Permalink

The folder is also reverted.  Still this issue occurs.

The next problem I'm experiencing is similar.

I do a merge, I see 6 changes in the changelist.  Then I revert, everything including the folder, then I try to do the same merge but the only thing that has changes is the folder itself.

I'm going to have to use something else for this.  This is getting seriously problematic.

Comment actions Permalink

An extra problematic scenario:

An analyst has given me a task to implement an XSD operation.  Therefore he has updated an XSD file with the new operation described.  I decide to give the 'merge from' another go.

So I do the merge from in Subversion Working Copies Information. 5 new files are added to the changelist "merge from analysts", as the branch is called 'analysts'.  Sadly I have to notice that the file that I need is NOT in this changelist.
Right...  So I opened that file from my local copy (trunk) and indeed, the file is unchanged.  Then when I do: <right-click> Subversion --> compare with branch --> analysts it shows me the actual changes from that branch.  So...  Why is this file not in my changelist?  Everything was clean.  TortoiseSVN tells me this and IntelliJ IDEA too.

Or am I doing something wrong?

Comment actions Permalink

So, when I revert I notice that on the directory that I'm trying to merge a merge tag didn't get reverted.  Namely:

svn:mergeinfo /branches/analysts:6-362, 368, 370, 372.

Version 372 are the changes in the branch that are missing from the merge.  So why is such a tag not reverted when I revert the whole directory?

Comment actions Permalink

What "revert" action do you mean - the one in "Local Changes" panel or "Revert Changes" action in "Repository" panel?

Probably you've already committed your merge (with merge info) and you mean "Revert Changes" action in "Repository" panel. In this case there is an issue that this action does not revert svn property changes correctly.

To mark necessary revisions as "not merged" you could use functionality provided by "Highlight Integrated" action in "Repository" panel. You could get more details here.
Comment actions Permalink

Sorry, I should have told you what caused all this.

It would seem that one of my colleagues had already tried to merge the same branch into the same trunk as I tried.  He didn't succeed and also didn't revert the trunk after the failure.  This caused the wrong merge revision to be committed, and hence I couldn't see the changes made before that revision.

Thanks for thinking along with me :-)



Please sign in to leave a comment.