[darcs-devel] Conversion to darcs-3

Ganesh Sittampalam ganesh at earth.li
Fri Oct 11 18:52:59 UTC 2019


Hi,

On 11/10/2019 12:51, Ben Franksen wrote:

> Well yes. In the scenario of tests/issue2605-duplicates.sh we end up
> with two (V1 or V2) repos R1, R2 with unconflicted patches A1, A2, B,
> such that R1=A1;B and R2=A2;B. This would convert cleanly to V3, since
> none of the patches are conflicted.

Also, if you take the repos R1=A1;X;A2;B and R2=A2;X;A1;B where B
conflicts with X, you'll get different results for B from two repos that
are identical up to commutation.

> But note that we can never be 100% sure that we don't encounter such a
> situation, even if V1 and V2 had never existed and we start fresh with
> V3, since our patch identities aren't cryptographically secure. So we
> could always fake another repo where a patch has different dependencies.
> This is an inherent weakness of Darcs and I cannot see a way to fix that.

All the invariants of Darcs can be broken by patch corruption or
manipulation - I also can't see a way to fix it without being able to
cheaply compute a minimal context.

Deliberately offering a command that can break our intended invariants
seems somehow worse. Even though the existence of V1 and V2 patches
already kind of does that :-)

Cheers,

Ganesh


More information about the darcs-devel mailing list