[darcs-users] Identical patches and dependencies
David Roundy
droundy at darcs.net
Tue Aug 12 13:46:41 UTC 2008
The answer to your problem is that C doesn *not* depend on A, since
you never told it that it depends on A. It depends, rather, on the
primitive change which is present in either A or B. If you want the
dependency to be on A itself, you need to make this explicit. I would
call this a feature, rather than a bug, except that we don't use it
consistently. It's definitely more consistent in darcs-2 semantics
than in darcs-1 semantics, since in darcs-2 A and B don't conflict.
David
On Tue, Aug 12, 2008 at 6:20 AM, Ian Lynagh <igloo at earth.li> wrote:
>
> Hi all,
>
> Apologies if this is already known, but had fallen out of my head.
>
> I realised last night that if primitive patches don't have names, then
> dependencies of named patches /cannot/ behave as I would expect when
> duplicate changes are involved.
>
> An example demonstrating this with actual darcs1 repos (also works with
> darcs2 repos) is here:
> http://urchin.earth.li/~ian/identical_patches.txt
> but the rest of this e-mail explains the problem.
>
>
> The details of what is inside a conflictor is irrelevant, so I'll just
> write [X,Ys] for the patch representing X, that has effect Ys.
>
> To start off with, we record a patch A in one repo, and B in another
> repo. A and B are the same primitive patch, but part of two different
> named patches. We also record a patch C that depends on A. So we have
> three repos:
>
> A
>
> B
>
> AC
>
> Now merge A and B:
>
> A[B,A^]
>
> AC
>
> and merge those two repos:
>
> A[B,A^][C,]
>
> Now, this must commute to
>
> AC[B,C^A^]
>
> and we can then unpull the B conflictor to get AC.
>
> But going back to
>
> A[B,A^][C,]
>
> this must also commute to
>
> B[A,B^][C,]
>
> But if A and B are not named, and represent the same primitive patches,
> then [B,A^] and [A,B^] look identical to the C conflictor! So this must
> commute to
>
> BC[A,C^B^]
>
> and again we can unpull to get BC. But in the land of named patches, C
> is supposed to depend on A!
>
>
> So my conclusion is that we must either have this counter-intuitive
> behaviour, or we must name primitive patches.
>
> Have I missed anything?
>
>
> Thanks
> Ian
>
>
More information about the darcs-users
mailing list