Discussion:
Out-of-Order Merging Near the End-of-File
Wilks, Daniel
2011-11-16 02:04:05 UTC
Permalink
I'm using CVS 1.11.22 and just ran across a CVS behavior that I'd never seen before and can't find any reference to it on the web.

I have three revisions on a branch, all of them adding lines near the end of a file. They all added methods to a class before the last, short, method in the file. They're in order rev1, rev2, rev3. I believe that the last set of new lines in the file were probably past the end of the file in the trunk. I'm not sure that matters but I think it does.

There have been no changes to this file on the trunk.

I needed to merge the last revision from the branch to the trunk. I specified the two branch revisions like cvs update -j 1.1.2.2 -j 1.1.2.3 thefile.txt. The merge failed with a conflict. When I went to resolve the conflicts the merged file in the trunk sandbox contained all the new lines from all three branch revisions.

I was able to reproduce this using a short text file with single line changes on a branch added at the very end of the file. Go to merge the last change into the trunk and you get all the changes as conflicts. It's not a problem with out-of-order merging because if the very last change was in the middle of the file it merges perfectly.

cvs diff correctly identifies the changes for each revision.

Does anyone know if this is expected behavior?

Many thanks,
Dan

Loading...