[darcs-devel] FullUnwind rebase behaviour

Ben Franksen ben.franksen at online.de
Mon May 18 15:45:28 UTC 2020


Am 18.05.20 um 09:16 schrieb Ganesh Sittampalam:
> On 18/05/2020 01:14, Ben Franksen wrote:
>>> Or just store actual conflictors in rebase after all. Lots to think
>>> about :-)
>>
>> Yeah, I have been thinking about that one, too. Still have to handle
>> fixups in /some/ way, for amend. And keeping track of prim identities
>> for V3 is going to be a bitch. You must be ultra careful to never
>> invalidate a V3 conflictor by pulling prim identities out from under it.
>> This is not something we can leverage types for, I think, though I'd
>> like to be proven wrong.
> 
> I would expect that even if we store conflictors in rebase, we rebuild
> them from the bottom up on unsuspend.

You still have to respect all invariants in the suspended state or
you'll get crashes, or worse erroneous behavior. I would feel quite a
bit more comfortable if we could avoid all the "unsafe prim" operations
(canonizeFL, cancelling inverses) in the rebase state that we store on
disk; and use them only for display and when we unsuspend. I am not sure
this is possible but that's what I'd aim for.

I have also trouble imagining how to correctly commute raw prim based
fixups with V3 conflictors. While you could lift them using
fromAnonymousPrim, I think this is semantically wrong, because a lot of
the fixups originate from (still existing) Named patches and thus should
really keep their identity.

Cheers
Ben



More information about the darcs-devel mailing list