Please check my thinking on bug 646979
John Arbash Meinel
john at arbash-meinel.com
Tue Oct 5 01:20:32 BST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
...
> We create a new revision with D & E as parents, and the contents of the
> later of the two (defined in terms of upstream version numbers). So, no,
> there is no possibility of conflicts at this stage.
So you preserve the content of exactly D or E, you just generate a new
node in the graph to supersede the other one, correct?
Say D is the 'winner', then you end up with a patch that reverts
everything in E.
In the below graph, the content in H == D, so when generating I, we
should see D as the common base, and I would then == F (because H - D ==
NULL, so there is nothing to apply to F to generate I)
>
>> A
>> /|\
>> E D B
>> |\|\|\
>> | H F C
>> \ \| |
>> \ I |
>> \ |
>> \ |
>> \|
>> G
>
>> Now you have a genuine criss-cross. As the lcas are E and B (ancestors
>> of both I and G that are not superseded by a more recent ancestor.)
>
>> Just using 3-way merge (vs say --weave) I would expect this to conflict
>> more than merging H => G, because of our specific base selection (when
>> we find a criss-cross 3-way goes to the next base, which will be A,
>> which then will try to merge (I-A) into (G-A).
>
> That's unfortunate.
>
> Is there a way we could use our increased knowledge about the revisions
> involved to merge with a strategy that would make this situation better?
- --weave is one option. :) (or per-file merge which we've talked about
many times but haven't found the cycles to implement.)
Going further with the above example, it really depends on what you
want. From what you've stated about "whichever one wins", then you sort
of simplify what you want. You explicitly stated that you are rejecting
any of the 2.1 changes that weren't in 3.0. I'm having a bit of a hard
time figuring out what you are trying to preserve in G, versus just
telling it "and now you are F/I".
>
> Would it be beneficial to have some concrete examples to try out?
>
> Thanks,
>
> James
>
Probably. Examples can certainly shed light on confusing points.
John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAkyqb1AACgkQJdeBCYSNAAM68wCfUomMmai1DaWwOYFoiapNlhHk
MVIAnibVDm5mwNC7/LJdw3FUo5qgOSjl
=GNt3
-----END PGP SIGNATURE-----
More information about the ubuntu-distributed-devel
mailing list