[darcs-devel] camp conflictors aka RepoPatchV3

Benjamin Franksen ben.franksen at online.de
Fri Sep 7 17:31:49 UTC 2018


Hi Everyone

I am happy to announce that I finally managed to iron out the last bugs 
from my implementation of camp conflictors in Darcs. All unit and 
quickcheck tests pass with -q10000, for both V1 and FileUUID prims.

The patch history is still a huge mess. I'll clean that up and then send 
a rebased bundle.

The last bug I found and fixed is interesting in that it is also in the
camp paper and in the camp implementation; however, it seems Ian already
suspected it: there is a comment in the camp code (at
camp-core/Camp/Patch/Catch.hs:126) that says:

   -- XXX I think this is wrong: Some of (invert qEffect')
   -- might be able to commute through p?

That comment, though at first rather cryptic to me, with hindsight 
actually says it all (and the fix, while not obvious to arrive at, is 
quite simple).

Many thanks Ian: you are a genius. I really feared that some of the 
unproven assumptions in your theory might fail when put to large scale 
property testing. But it really looks as if everything works out nicely 
and we can now concentrate on what's missing(*): how to design painless 
conversion to the new format; and a clean  implementation of conflict 
resolution according to the spec I arrived at recently.

Cheers
Ben

(*) There are a few engineering problems that also need to be solved for 
a full integration up to the command level. A major one is that our 
generic Prim interfaces currently do not allow to /introduce/ primitive 
patches with "names" (UUIDs) because they are pure.


More information about the darcs-devel mailing list