Conflictor patches
- data RealPatch where
- prim2real :: Prim -> RealPatch
- is_consistent :: RealPatch -> Maybe Doc
- is_forward :: RealPatch -> Maybe Doc
- is_duplicate :: RealPatch -> Bool
- pullCommon :: Patchy p => FL p -> FL p -> Common p
- mergeUnravelled :: [Sealed (FL Prim)] -> Maybe (FlippedSeal RealPatch)
Documentation
Duplicate x
: This patch has no effect since x
is already present in the repository
Etacilpud x: invert (Duplicate x)
Normal prim
: A primitive patch
Conflictor ix xx x
:
ix
is the set of patches:
- that conflict with
x
and also conflict with another patch in the repository - that conflict with a patch that conflict with
x
xx
is the sequence of patches that conflict *only* with x
x
is the current patch
ix
and x
are stored as Non
objects, which include any necessary
context to uniquely define the patch that is referred to.
InvConflictor ix xx x
: like invert (Conflictor ix xx x)
is_consistent :: RealPatch -> Maybe DocSource
This is used for unit-testing and for internal sanity checks
is_forward :: RealPatch -> Maybe DocSource
This is only used for unit testing
is_duplicate :: RealPatch -> BoolSource
is_duplicate
p
is ' True
if p
is either a Duplicate
or Etacilpud
patch
pullCommon :: Patchy p => FL p -> FL p -> Common pSource
pullCommon
xs ys
returns the set of patches that can be commuted
out of both xs
and ys
along with the remnants of both lists
mergeUnravelled :: [Sealed (FL Prim)] -> Maybe (FlippedSeal RealPatch)Source