[cvsnt] Merging problems, getting strange conflicts....

Bo Berglund bo.berglund at telia.com
Mon May 26 22:41:08 BST 2008


I have gotten into a bit of trouble with a program I have been thrown
into by circumstance 9 months ago...
I had to supply TCP/IP comm capabilities to an automation control
program and therefore I made a Branch_TCPIP off HEAD back in
August-07.
Since then I have been working off-on on this when time has allowed.
But since I then also became the *expert* on that particular program I
was forced to do a number of smaller customer induced changes a few
months later. I did these on HEAD.

Now my TCPIP branch is working fine and I need to move it to TRUNK. In
preparation for this I merged HEAD into the branch and solved the
conflicts (because HEAD had changed a lot less than Branch over the
months). I thought that by doing this the final merge from branch to
trunk would be almost automatic.

However, when I perform the merge there are large sections marked as
*conflicts*, which should not happen since they were already solved on
the merge from head to branch and committed there. Very strange.
I thought that CVSNT kept track of the merges so that it does not have
to calculate the diffs all the way back to the original branch point
and back to the tip (which will create conflicte). I thought that
doing the merge head-branch would mark the two as being basically the
same.

Why does this happen? (We are using build 2382).

I have done an experiment:
- Copy the clean HEAD file away
- Update with merge from branch
- Replace with saved file
- Load this and the tcpip branch file (separate sandbox) in WinMerge

Now I can see all the differences and am able to manually move them
over to the head file and finally commit that. Tedious since I have
about a hundred diff sections...
But the point is that none of the diffs are in direction head->branch
so there is really no conflict....

I guess that after I have merged in head -> branch and solved the
conflicts and committed I might as well just do the merge in the head
sandbox and then copy over all changed files from the TCPIP branch on
top of the conflicting files and just commit. It would make head equal
to branch, but is a manual operation that does not really feel right
in terms of SCC...

HTH

/Bo
(Bo Berglund, developer in Sweden)


More information about the cvsnt mailing list