[cvsnt] Mergepoint issues on 2.5.0.3 b2382
Tony Hoyle
tony.hoyle at march-hare.local
Fri Jan 12 14:23:12 GMT 2007
Richard Wirth wrote:
> Hello Arthur, hello Andreas,
>
> May be Tony has tested a different solution than provided in the patch
> by Andreras?
>
> The patch works as follows:
It's not a patch really it's a reversion to the code that was removed
because it was broken (because it verifiably caused data loss). The
overriding rule when considering functions in cvsnt is that it must
*not* lose data. Anything that does is either fixed or removed.
Convenience is very low down the list compared to that.
The problem is if you merge A->B you cannot assume that A==B.
Merge A->B means that B contains A (possibly changed a bit due to
conflict resolitution, so B might not contain A at all in the most
pathalogical case). It does not mean that A contains B.
Let's go through this again. For the final time.
Create file - Revision 1.1
Commit a revision to A - Revision 1.1.2.1
Make changes on A - Revision 1.1.2.2
Make changes on HEAD - Revision 1.2
Merge HEAD->A - diff(1.1:1.2)->1.1.2.3
Merge A->HEAD
With one directional mergepoints:
diff(1.1:1.1.2.3)->1.2
With bidirectional mergepoints:
diff(1.1.2.3:1.1.2.3)->1.2 (ie. a null diff, losing the changes in
1.1.2.1 and 1.1.2.2).
In the bidirectional case the revision 1.1.2.1 and 1.1.2.2 changes are
lost - and that's quite a trivial example. Expand it to multiple
branches and revisions and it gets hard to track.
Tony
More information about the cvsnt
mailing list