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 188.8.131.52 -j 184.108.40.206 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.