[darcs-devel] [patch1946] WIP: introduce concept of unwinding a conflict

Ganesh Sittampalam ganesh at earth.li
Sun Jan 26 11:06:19 UTC 2020


Hi,

On 20/01/2020 15:05, Benjamin Franksen wrote:

> sorry for dropping out of darcs development for quite a while, in
> particular for not responding to this message earlier.

No problem, I've been doing other things for a while too.

I have posted my current draft code here:

https://hub.darcs.net/ganesh/darcs-unwind-draft-20200126

As usual it'll take me a while to clean this up for submission.

> Am 05.12.19 um 08:16 schrieb Ganesh Sittampalam:

>> The upshot is that I have an implementation of fullUnwind that works for
>> V2 and V3 patches but fails for some V1 patches.
> 
> Hey, that sounds pretty good.
> 
> Which features are used to achieve this? To elaborate, suppose, for the
> sake of discussion, we disregard V1 and V2, could the squashing /
> reordering be done with /named/ prim patches a la V3 alone? If not,
> which methods from the raw prim patch interfaces are you using?

I rely on Commute, Eq2, and Invert - see mkUnwound and squashUnwound here:

https://hub.darcs.net/ganesh/darcs-unwind-draft-20200126/browse/src/Darcs/Patch/Unwind.hs

Does that answer your question?

>> For the V1 failures, I have a test case with 5 patches where the effect
>> of the two routes through a merge square is different, even after
>> collapsing inverses and commuting. I think this is a clear bug in V1;
> 
> IIUC, you claim there are situations where we have patch sequences p and
> q, such that
> 
>   merge (p:\/:q) = q':/\:p'  &&  effect (p:>q') /= effect (q:>p')
> 
> This is definitely a bug.

Correct, that's what I claim. See example4guts and below here:

https://hub.darcs.net/ganesh/darcs-unwind-draft-20200126/browse/harness/Darcs/Test/Patch/Unwind.hs#207

Ganesh


More information about the darcs-devel mailing list