On Mon, Jan 30, 2012 at 02:23:46PM +0100, Stefan Sperling wrote:
> What we use during --reintegrate is (3.2 b).

And here I'm catching myself spreading misinformation again.

There is another tweak we use during reintegrate.
Consider the graph again (fixed version):

      (3)
                 +-b@r2--+ b@r4--b@r5-b@r6 ----
       (branch) /        ^             | (merge 2)
               /         | (merge 1)   v
         --- a@r1 ------a@r3-----------+- a@r7 ----

If we used:

  (3.2 b) svn co a@r6 wc; svn merge b@r4 b@r7 a
 
we'd miss b@r2 during the merge. It won't be applied to branch a.
But we want it in the changeset.

So what really happens is:

  (3.2 b) svn co a@r6 wc; svn merge a@r4 b@r6 a

Note that a is compared to b, rather than b against its former self.
This delta includes b@r2 because this change isn't yet on branch a.

I'll readily admit that my initial statement about reintegrate
taking no shortcuts may not be correct, depending on the definition
of "shortcut". However, this is all about driving diff3 in a way that
produces results without spurious conflicts, rather than a general
mistake in applying some CM theory merge model.

Reply via email to