ContentsIndex
Darcs.Patch.Real
Description
Conflictor patches
Synopsis
data RealPatch where
Duplicate :: Non RealPatch -> RealPatch
Etacilpud :: Non RealPatch -> RealPatch
Normal :: Prim -> RealPatch
Conflictor :: [Non RealPatch] -> FL Prim -> Non RealPatch -> RealPatch
InvConflictor :: [Non RealPatch] -> FL Prim -> Non RealPatch -> RealPatch
is_duplicate :: RealPatch -> Bool
is_forward :: RealPatch -> Maybe Doc
mergeUnravelled :: [Sealed (FL Prim)] -> Maybe (FlippedSeal RealPatch)
sealed2non :: Sealed (FL Prim) -> Non RealPatch
mergeConflictingNons :: [Non RealPatch] -> Maybe (FL RealPatch)
join_effects :: Effect p => p -> FL Prim
assertConsistent :: RealPatch -> RealPatch
mergeAfterConflicting :: FL RealPatch -> FL Prim -> Maybe (FL RealPatch, FL RealPatch)
geteff :: [Non RealPatch] -> FL Prim -> ([Non RealPatch], FL RealPatch)
xx2nons :: [Non RealPatch] -> FL Prim -> [Non RealPatch]
xx2patches :: [Non RealPatch] -> FL Prim -> FL RealPatch
allNormal :: FL RealPatch -> Maybe (FL Prim)
is_consistent :: RealPatch -> Maybe Doc
everyone_conflicts :: [Non RealPatch] -> Bool
prim2real :: Prim -> RealPatch
merge_with :: Non RealPatch -> [Non RealPatch] -> Sealed (FL Prim)
eqSet :: Eq a => [a] -> [a] -> Bool
remove1 :: Eq a => a -> [a] -> Maybe [a]
minus :: Eq a => [a] -> [a] -> Maybe [a]
invertNon :: Non RealPatch -> Non RealPatch
nonTouches :: Non RealPatch -> [FilePath]
toNons :: (Conflict p, Patchy p, ToFromPrim p, Nonable p) => FL p -> [Non p]
initsFL :: Patchy p => FL p -> [Sealed (p :> FL p)]
fromNons :: [Non RealPatch] -> Maybe (Sealed (FL Prim))
pullInContext :: [Non RealPatch] -> Maybe (Sealed Prim, [Non RealPatch])
filterConflictsFL :: Non RealPatch -> FL Prim -> FL Prim :> FL Prim
all_conflicts_with :: Non RealPatch -> [Non RealPatch] -> ([Non RealPatch], [Non RealPatch])
conflicts_with :: Non RealPatch -> Non RealPatch -> Bool
depends_upon :: Non RealPatch -> Non RealPatch -> Bool
(+++) :: Eq a => [a] -> [a] -> [a]
swapMerge :: (RealPatch :\/: RealPatch) -> RealPatch :/\: RealPatch
invertCommute :: (RealPatch :> RealPatch) -> Maybe (RealPatch :> RealPatch)
invertCommuteNC :: (RealPatch :> RealPatch) -> Maybe (RealPatch :> RealPatch)
pullCommon :: Patchy p => FL p -> FL p -> Common p
data Common p where
Common :: FL p -> FL p -> FL p -> Common p
pullCommonRL :: Patchy p => RL p -> RL p -> CommonRL p
data CommonRL p where
CommonRL :: RL p -> RL p -> RL p -> CommonRL p
Documentation
data RealPatch where

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)

Constructors
Duplicate :: Non RealPatch -> RealPatch
Etacilpud :: Non RealPatch -> RealPatch
Normal :: Prim -> RealPatch
Conflictor :: [Non RealPatch] -> FL Prim -> Non RealPatch -> RealPatch
InvConflictor :: [Non RealPatch] -> FL Prim -> Non RealPatch -> RealPatch
show/hide Instances
is_duplicate :: RealPatch -> Bool
is_duplicate p is ' True if p is either a Duplicate or Etacilpud patch
is_forward :: RealPatch -> Maybe Doc
This is only used for unit testing
mergeUnravelled :: [Sealed (FL Prim)] -> Maybe (FlippedSeal RealPatch)
sealed2non :: Sealed (FL Prim) -> Non RealPatch
sealed2non (Sealed xs) converts xs to a Non. xs must be non-empty since we split this list at the last patch
mergeConflictingNons :: [Non RealPatch] -> Maybe (FL RealPatch)
join_effects :: Effect p => p -> FL Prim
assertConsistent :: RealPatch -> RealPatch
mergeAfterConflicting :: FL RealPatch -> FL Prim -> Maybe (FL RealPatch, FL RealPatch)
mergeAfterConflicting takes as input a sequence of conflicting patches xxx (which therefore have no effect) and a sequence of primitive patches yyy that follow said sequence of conflicting patches, and may depend upon some of the conflicting patches (as a resolution).
geteff :: [Non RealPatch] -> FL Prim -> ([Non RealPatch], FL RealPatch)
xx2nons :: [Non RealPatch] -> FL Prim -> [Non RealPatch]
xx2patches :: [Non RealPatch] -> FL Prim -> FL RealPatch
allNormal :: FL RealPatch -> Maybe (FL Prim)
If xs consists only of Normal patches, allNormal xs returns Just pxs those patches (so lengthFL pxs == lengthFL xs). Otherwise, it returns Nothing.
is_consistent :: RealPatch -> Maybe Doc
This is used for unit-testing and for internal sanity checks
everyone_conflicts :: [Non RealPatch] -> Bool
prim2real :: Prim -> RealPatch
merge_with :: Non RealPatch -> [Non RealPatch] -> Sealed (FL Prim)
eqSet :: Eq a => [a] -> [a] -> Bool
remove1 :: Eq a => a -> [a] -> Maybe [a]
minus :: Eq a => [a] -> [a] -> Maybe [a]
invertNon :: Non RealPatch -> Non RealPatch
nonTouches :: Non RealPatch -> [FilePath]
toNons :: (Conflict p, Patchy p, ToFromPrim p, Nonable p) => FL p -> [Non p]
initsFL :: Patchy p => FL p -> [Sealed (p :> FL p)]
fromNons :: [Non RealPatch] -> Maybe (Sealed (FL Prim))
pullInContext :: [Non RealPatch] -> Maybe (Sealed Prim, [Non RealPatch])
filterConflictsFL :: Non RealPatch -> FL Prim -> FL Prim :> FL Prim
all_conflicts_with :: Non RealPatch -> [Non RealPatch] -> ([Non RealPatch], [Non RealPatch])
conflicts_with :: Non RealPatch -> Non RealPatch -> Bool
depends_upon :: Non RealPatch -> Non RealPatch -> Bool
(+++) :: Eq a => [a] -> [a] -> [a]
swapMerge :: (RealPatch :\/: RealPatch) -> RealPatch :/\: RealPatch
invertCommute :: (RealPatch :> RealPatch) -> Maybe (RealPatch :> RealPatch)
invertCommuteNC :: (RealPatch :> RealPatch) -> Maybe (RealPatch :> RealPatch)
pullCommon :: Patchy p => FL p -> FL p -> Common p
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
data Common p where
Common cs xs ys represents two sequences of patches that have cs in common, in other words cs +>+ xs and cs +>+ ys
Constructors
Common :: FL p -> FL p -> FL p -> Common p
pullCommonRL :: Patchy p => RL p -> RL p -> CommonRL p
pullCommonRL xs ys returns the set of patches that can be commuted out of both xs and ys along with the remnants of both lists
data CommonRL p where
CommonRL xs ys cs' represents two sequences of patches that have cs in common, in other words xs +<+ cs and ys +<+ cs
Constructors
CommonRL :: RL p -> RL p -> RL p -> CommonRL p
Produced by Haddock version 2.4.2