Please check my thinking on bug 646979
James Westby
jw+debian at jameswestby.net
Sat Oct 16 20:16:46 BST 2010
On Tue, 05 Oct 2010 09:16:36 -0500, John Arbash Meinel <john at arbash-meinel.com> wrote:
> I've been thinking about it, and I'm pretty confident that what you are
> trying to do is inherently "criss-cross". Specifically consider a
> semi-ideal case:
>
> upstream
>
> A release 2.0
> |
> B release 2.1
> |
> C release 3.0
>
> with debian doing:
>
> A
> |\
> B d deb 2.0-1
> | |
> C |
> \|
> e deb 3.0-1
>
> And ubuntu doing:
>
> A
> |\
> | d deb 2.0-1
> | |
> B u ubuntu 2.0-1ubuntu1
> \|
> v ubuntu 2.1-1ubuntu1
>
>
> These graphs are, inherently, criss-cross, because you don't have a
> single point of convergence. Both 'ubuntu' and 'debian' make new changes
> vs the upstream, and never does one fully supersede the other. ubuntu is
> constantly pulling from debian, but debian *never* pulls back from ubuntu.
This will be the case for the vast majority of branches for at least the
medium term I think.
> Let's draw it combined:
> A
> |\
> | d
> | |\
> B | u
> |\: |
> | \ |
> | :\|
> C | v
> \|
> e
>
> (and that is with the 'ideal' case that C is actually a descendant of B
> and not A, though if it isn't you can usually fake it:
> A
> |\
> B C
> |/
> C'
> )
This "faking" is exactly what we are doing.
> Anyway, in the above graph, B and d are competing as common ancestors.
> If you were to strictly use d as the base, then you would get the
> changes from d => e, but that would include the A=>B changes. (d does
> not include B, so those changes would try to be 'replayed')
>
> If you used B as the base, then you would be trying to merge in the 'd'
> changes a second time.
>
> Now, what matters is what is explicitly changed by each revision.
> Because if "d - A" is strictly adding debian/, and not touching the
> actual content, then there are likely no conflicts in a per-file sense.
>
> That is what '--weave' should be able to handle, since it does per-file
> merging.
Would '--weave' perform at least as well if "d - A" doesn't have that
restriction?
> However, if we can't introduce a new revision in the 'debian' line, then
> it is really hard to find a single common base between the import lines.
Thanks for looking at this. I realise my characterisation of "better" is
fuzzy, which doesn't help.
More information about the ubuntu-distributed-devel
mailing list