darcs-2.12.5: a distributed, interactive, smart revision control system

Safe Haskell | None
Language | Haskell2010

Darcs.Patch.V2.RepoPatch

Synopsis

- data RepoPatchV2 prim wX wY where
  - Duplicate :: Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wX wX
  - Etacilpud :: Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wX wX
  - Normal :: prim wX wY -> RepoPatchV2 prim wX wY
  - Conflictor :: [Non (RepoPatchV2 prim) wX] -> FL prim wX wY -> Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wY wX
  - InvConflictor :: [Non (RepoPatchV2 prim) wX] -> FL prim wX wY -> Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wX wY
- prim2repopatchV2 :: prim wX wY -> RepoPatchV2 prim wX wY
- isConsistent :: PrimPatch prim => RepoPatchV2 prim wX wY -> Maybe Doc
- isForward :: PrimPatch prim => RepoPatchV2 prim wS wY -> Maybe Doc
- isDuplicate :: RepoPatchV2 prim wS wY -> Bool
- mergeUnravelled :: PrimPatch prim => [Sealed (FL prim wX)] -> Maybe (FlippedSeal (RepoPatchV2 prim) wX)

# Documentation

data RepoPatchV2 prim wX wY where #

`RepoPatchV2` is used to represents prim patches that are duplicates of, or conflict with, another prim patch in the repository.

`Normal prim`: A primitive patch

`Duplicate x`: This patch has no effect since `x` is already present in the repository.

    Etacilpud x: invert (Duplicate x)

`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 original, conflicting patch.

`ix` and `x` are stored as `Non` objects, which include any necessary context to uniquely define the patch that is referred to.

The intuition is that a Conflictor should have the effect of inverting any patches that `x` conflicts with, that haven't already been undone by another Conflictor in the repository. Therefore, the effect of a Conflictor is `invert xx`.

`InvConflictor ix xx x`: like `invert (Conflictor ix xx x)`

Constructors

Duplicate :: Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wX wX |
Etacilpud :: Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wX wX |
Normal :: prim wX wY -> RepoPatchV2 prim wX wY |
Conflictor :: [Non (RepoPatchV2 prim) wX] -> FL prim wX wY -> Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wY wX |
InvConflictor :: [Non (RepoPatchV2 prim) wX] -> FL prim wX wY -> Non (RepoPatchV2 prim) wX -> RepoPatchV2 prim wX wY |

Instances

Show2 prim => Show2 (RepoPatchV2 prim) # |
Methods showDict2 :: ShowDict (RepoPatchV2 prim wX wY) #
PrimPatch prim => MyEq (RepoPatchV2 prim) # |
Methods unsafeCompare :: RepoPatchV2 prim wA wB -> RepoPatchV2 prim wC wD -> Bool # (=\/=) :: RepoPatchV2 prim wA wB -> RepoPatchV2 prim wA wC -> EqCheck wB wC # (=/\=) :: RepoPatchV2 prim wA wC -> RepoPatchV2 prim wB wC -> EqCheck wA wB #
PatchListFormat (RepoPatchV2 prim) # |
Methods patchListFormat :: ListFormat (RepoPatchV2 prim) #
PrimPatch prim => Commute (RepoPatchV2 prim) # |
Methods commute :: (RepoPatchV2 prim :> RepoPatchV2 prim) wX wY -> Maybe ((RepoPatchV2 prim :> RepoPatchV2 prim) wX wY) #
PatchDebug prim => PatchDebug (RepoPatchV2 prim) # |
Methods patchDebugDummy :: RepoPatchV2 prim wX wY -> () #
PatchInspect prim => PatchInspect (RepoPatchV2 prim) # |
Methods listTouchedFiles :: RepoPatchV2 prim wX wY -> [FilePath] # hunkMatches :: (ByteString -> Bool) -> RepoPatchV2 prim wX wY -> Bool #
Invert prim => Invert (RepoPatchV2 prim) # |
Methods invert :: RepoPatchV2 prim wX wY -> RepoPatchV2 prim wY wX #
PrimPatch prim => Merge (RepoPatchV2 prim) # |
Methods merge :: (RepoPatchV2 prim :\/: RepoPatchV2 prim) wX wY -> (RepoPatchV2 prim :/\: RepoPatchV2 prim) wX wY #
PrimPatch prim => ReadPatch (RepoPatchV2 prim) # |
Methods readPatch' :: ParserM m => m (Sealed (RepoPatchV2 prim wX)) #
PrimPatch prim => Apply (RepoPatchV2 prim) # |
Associated Types type ApplyState (RepoPatchV2 prim :: * -> * -> *) :: (* -> *) -> * # Methods apply :: ApplyMonad (ApplyState (RepoPatchV2 prim)) m => RepoPatchV2 prim wX wY -> m () #
PrimPatch prim => RepairToFL (RepoPatchV2 prim) # |
Methods applyAndTryToFixFL :: ApplyMonad (ApplyState (RepoPatchV2 prim)) m => RepoPatchV2 prim wX wY -> m (Maybe (String, FL (RepoPatchV2 prim) wX wY)) #
PrimPatch prim => Check (RepoPatchV2 prim) # |
Methods isInconsistent :: RepoPatchV2 prim wX wY -> Maybe Doc #
PrimPatch prim => ShowPatch (RepoPatchV2 prim) # |
Methods showNicely :: RepoPatchV2 prim wX wY -> Doc # showContextPatch :: (Monad m, ApplyMonad (ApplyState (RepoPatchV2 prim)) m) => RepoPatchV2 prim wX wY -> m Doc # description :: RepoPatchV2 prim wX wY -> Doc # summary :: RepoPatchV2 prim wX wY -> Doc # summaryFL :: FL (RepoPatchV2 prim) wX wY -> Doc # thing :: RepoPatchV2 prim wX wY -> String # things :: RepoPatchV2 prim wX wY -> String #
PrimPatch prim => ShowPatchBasic (RepoPatchV2 prim) # |
Methods showPatch :: RepoPatchV2 prim wX wY -> Doc #
IsHunk prim => IsHunk (RepoPatchV2 prim) # |
Methods isHunk :: RepoPatchV2 prim wX wY -> Maybe (FileHunk wX wY) #
PrimPatch prim => Patchy (RepoPatchV2 prim) # |
ToFromPrim (RepoPatchV2 prim) # |
Methods toPrim :: RepoPatchV2 prim wX wY -> Maybe (PrimOf (RepoPatchV2 prim) wX wY) #
FromPrim (RepoPatchV2 prim) # |
Methods fromPrim :: PrimOf (RepoPatchV2 prim) wX wY -> RepoPatchV2 prim wX wY #
PrimPatch prim => PrimPatchBase (RepoPatchV2 prim) # |
Associated Types type PrimOf (RepoPatchV2 prim :: * -> * -> *) :: * -> * -> * #
PrimPatch prim => Effect (RepoPatchV2 prim) # |
Methods effect :: RepoPatchV2 prim wX wY -> FL (PrimOf (RepoPatchV2 prim)) wX wY # effectRL :: RepoPatchV2 prim wX wY -> RL (PrimOf (RepoPatchV2 prim)) wX wY #
PrimPatch prim => CommuteNoConflicts (RepoPatchV2 prim) # |
Methods commuteNoConflicts :: (RepoPatchV2 prim :> RepoPatchV2 prim) wX wY -> Maybe ((RepoPatchV2 prim :> RepoPatchV2 prim) wX wY) #
PrimPatch prim => Conflict (RepoPatchV2 prim) # |
Methods resolveConflicts :: RepoPatchV2 prim wX wY -> [[Sealed (FL (PrimOf (RepoPatchV2 prim)) wY)]] # conflictedEffect :: RepoPatchV2 prim wX wY -> [IsConflictedPrim (PrimOf (RepoPatchV2 prim))] #
PrimPatch prim => Nonable (RepoPatchV2 prim) # |
Methods non :: RepoPatchV2 prim wX wY -> Non (RepoPatchV2 prim) wX #
Show2 prim => Show1 (RepoPatchV2 prim wX) # |
Methods showDict1 :: ShowDict (RepoPatchV2 prim wX wX) #
Show2 prim => Show (RepoPatchV2 prim wX wY) # |
Methods showsPrec :: Int -> RepoPatchV2 prim wX wY -> ShowS # show :: RepoPatchV2 prim wX wY -> String # showList :: [RepoPatchV2 prim wX wY] -> ShowS #
type ApplyState (RepoPatchV2 prim) # |
type ApplyState (RepoPatchV2 prim) = ApplyState prim
type PrimOf (RepoPatchV2 prim) # |
type PrimOf (RepoPatchV2 prim) = prim

prim2repopatchV2 :: prim wX wY -> RepoPatchV2 prim wX wY #

isConsistent :: PrimPatch prim => RepoPatchV2 prim wX wY -> Maybe Doc #

This is used for unit-testing and for internal sanity checks

isForward :: PrimPatch prim => RepoPatchV2 prim wS wY -> Maybe Doc #

`isForward` `p` is `True` if `p` is either an `InvConflictor` or `Etacilpud`.

isDuplicate :: RepoPatchV2 prim wS wY -> Bool #

`isDuplicate` `p` is `True` if `p` is either a `Duplicate` or `Etacilpud` patch.

mergeUnravelled :: PrimPatch prim => [Sealed (FL prim wX)] -> Maybe (FlippedSeal (RepoPatchV2 prim) wX) #

`mergeUnravelled` is used when converting from Darcs V1 patches (Mergers) to Darcs V2 patches (Conflictors).