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

Safe HaskellNone
LanguageHaskell2010

Darcs.Patch.Prim

Synopsis

Documentation

primIsAddfile :: PrimClassify prim => prim wX wY -> Bool #

primIsHunk :: PrimClassify prim => prim wX wY -> Bool #

primIsBinary :: PrimClassify prim => prim wX wY -> Bool #

primIsSetpref :: PrimClassify prim => prim wX wY -> Bool #

primIsAdddir :: PrimClassify prim => prim wX wY -> Bool #

is_filepatch :: PrimClassify prim => prim wX wY -> Maybe FileName #

summarizePrim :: PrimDetails prim => prim wX wY -> [SummDetail] #

applyPrimFL :: (PrimApply prim, ApplyMonad (ApplyState prim) m) => FL prim wX wY -> m () #

class PrimRead prim where #

Minimal complete definition

readPrim

Methods

readPrim :: ParserM m => FileNameFormat -> m (Sealed (prim wX)) #

Instances
PrimRead Prim # 
Instance details

Defined in Darcs.Patch.Prim.V1.Read

Methods

readPrim :: ParserM m => FileNameFormat -> m (Sealed (Prim wX)) #

PrimRead Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID.Read

Methods

readPrim :: ParserM m => FileNameFormat -> m (Sealed (Prim wX)) #

class PrimShow prim where #

Minimal complete definition

showPrim, showPrimCtx

Methods

showPrim :: FileNameFormat -> prim wA wB -> Doc #

showPrimCtx :: ApplyMonad (ApplyState prim) m => FileNameFormat -> prim wA wB -> m Doc #

Instances
ApplyState Prim ~ Tree => PrimShow Prim # 
Instance details

Defined in Darcs.Patch.Prim.V1.Show

PrimShow Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID.Show

class FromPrim p where #

Minimal complete definition

fromPrim

Methods

fromPrim :: PrimOf p wX wY -> p wX wY #

Instances
FromPrim Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID

Methods

fromPrim :: PrimOf Prim wX wY -> Prim wX wY #

FromPrim Prim # 
Instance details

Defined in Darcs.Patch.V2.Prim

Methods

fromPrim :: PrimOf Prim wX wY -> Prim wX wY #

FromPrim Prim # 
Instance details

Defined in Darcs.Patch.V1.Prim

Methods

fromPrim :: PrimOf Prim wX wY -> Prim wX wY #

FromPrim DummyPatch # 
Instance details

Defined in Darcs.Patch.Dummy

Methods

fromPrim :: PrimOf DummyPatch wX wY -> DummyPatch wX wY #

FromPrim p => FromPrim (FL p) # 
Instance details

Defined in Darcs.Patch.Prim.Class

Methods

fromPrim :: PrimOf (FL p) wX wY -> FL p wX wY #

FromPrim p => FromPrim (Bracketed p) # 
Instance details

Defined in Darcs.Patch.Bracketed.Instances

Methods

fromPrim :: PrimOf (Bracketed p) wX wY -> Bracketed p wX wY #

FromPrim (RepoPatchV1 prim) # 
Instance details

Defined in Darcs.Patch.V1.Core

Methods

fromPrim :: PrimOf (RepoPatchV1 prim) wX wY -> RepoPatchV1 prim wX wY #

FromPrim (RepoPatchV2 prim) # 
Instance details

Defined in Darcs.Patch.V2.RepoPatch

Methods

fromPrim :: PrimOf (RepoPatchV2 prim) wX wY -> RepoPatchV2 prim wX wY #

class FromPrims p where #

Minimal complete definition

fromPrims

Methods

fromPrims :: FL (PrimOf p) wX wY -> p wX wY #

Instances
FromPrim p => FromPrims (RL p) # 
Instance details

Defined in Darcs.Patch.Prim.Class

Methods

fromPrims :: FL (PrimOf (RL p)) wX wY -> RL p wX wY #

FromPrim p => FromPrims (FL p) # 
Instance details

Defined in Darcs.Patch.Prim.Class

Methods

fromPrims :: FL (PrimOf (FL p)) wX wY -> FL p wX wY #

class FromPrim p => ToFromPrim p where #

Minimal complete definition

toPrim

Methods

toPrim :: p wX wY -> Maybe (PrimOf p wX wY) #

Instances
ToFromPrim Prim # 
Instance details

Defined in Darcs.Patch.V2.Prim

Methods

toPrim :: Prim wX wY -> Maybe (PrimOf Prim wX wY) #

ToFromPrim Prim # 
Instance details

Defined in Darcs.Patch.V1.Prim

Methods

toPrim :: Prim wX wY -> Maybe (PrimOf Prim wX wY) #

ToFromPrim (RepoPatchV2 prim) # 
Instance details

Defined in Darcs.Patch.V2.RepoPatch

Methods

toPrim :: RepoPatchV2 prim wX wY -> Maybe (PrimOf (RepoPatchV2 prim) wX wY) #

class (PrimPatchCommon prim, ReadPatch prim, ShowPatch prim, ShowContextPatch prim, PatchListFormat prim) => PrimPatch prim #

Instances
PrimPatch Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID

PrimPatch Prim # 
Instance details

Defined in Darcs.Patch.V2.Prim

PrimPatch Prim # 
Instance details

Defined in Darcs.Patch.V1.Prim

class PrimPatch (PrimOf p) => PrimPatchBase p #

Associated Types

type PrimOf (p :: * -> * -> *) :: * -> * -> * #

Instances
PrimPatchBase Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID

Associated Types

type PrimOf Prim :: * -> * -> * #

PrimPatchBase Prim # 
Instance details

Defined in Darcs.Patch.V2.Prim

Associated Types

type PrimOf Prim :: * -> * -> * #

PrimPatchBase Prim # 
Instance details

Defined in Darcs.Patch.V1.Prim

Associated Types

type PrimOf Prim :: * -> * -> * #

PrimPatchBase DummyPatch # 
Instance details

Defined in Darcs.Patch.Dummy

Associated Types

type PrimOf DummyPatch :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (RL p) # 
Instance details

Defined in Darcs.Patch.Prim.Class

Associated Types

type PrimOf (RL p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (FL p) # 
Instance details

Defined in Darcs.Patch.Prim.Class

Associated Types

type PrimOf (FL p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (Bracketed p) # 
Instance details

Defined in Darcs.Patch.Bracketed.Instances

Associated Types

type PrimOf (Bracketed p) :: * -> * -> * #

PrimPatch prim => PrimPatchBase (RepoPatchV1 prim) # 
Instance details

Defined in Darcs.Patch.V1.Core

Associated Types

type PrimOf (RepoPatchV1 prim) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (Named p) # 
Instance details

Defined in Darcs.Patch.Named

Associated Types

type PrimOf (Named p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (RebaseName p) # 
Instance details

Defined in Darcs.Patch.Rebase.Name

Associated Types

type PrimOf (RebaseName p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (RebaseFixup p) # 
Instance details

Defined in Darcs.Patch.Rebase.Fixup

Associated Types

type PrimOf (RebaseFixup p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (Suspended p) # 
Instance details

Defined in Darcs.Patch.Rebase.Container

Associated Types

type PrimOf (Suspended p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (WithDroppedDeps p) # 
Instance details

Defined in Darcs.Patch.Rebase.Viewing

Associated Types

type PrimOf (WithDroppedDeps p) :: * -> * -> * #

PrimPatch (PrimOf p) => PrimPatchBase (RebaseChange p) # 
Instance details

Defined in Darcs.Patch.Rebase.Viewing

Associated Types

type PrimOf (RebaseChange p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (RebaseSelect p) # 
Instance details

Defined in Darcs.Patch.Rebase.Viewing

Associated Types

type PrimOf (RebaseSelect p) :: * -> * -> * #

PrimPatch prim => PrimPatchBase (RepoPatchV2 prim) # 
Instance details

Defined in Darcs.Patch.V2.RepoPatch

Associated Types

type PrimOf (RepoPatchV2 prim) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (WrappedNamed rt p) # 
Instance details

Defined in Darcs.Patch.Named.Wrapped

Associated Types

type PrimOf (WrappedNamed rt p) :: * -> * -> * #

PrimPatchBase p => PrimPatchBase (PatchInfoAnd rt p) # 
Instance details

Defined in Darcs.Patch.PatchInfoAnd

Associated Types

type PrimOf (PatchInfoAnd rt p) :: * -> * -> * #

class PrimConstruct prim where #

Methods

addfile :: FilePath -> prim wX wY #

rmfile :: FilePath -> prim wX wY #

adddir :: FilePath -> prim wX wY #

rmdir :: FilePath -> prim wX wY #

move :: FilePath -> FilePath -> prim wX wY #

changepref :: String -> String -> String -> prim wX wY #

hunk :: FilePath -> Int -> [ByteString] -> [ByteString] -> prim wX wY #

tokreplace :: FilePath -> String -> String -> String -> prim wX wY #

binary :: FilePath -> ByteString -> ByteString -> prim wX wY #

primFromHunk :: FileHunk wX wY -> prim wX wY #

anIdentity :: prim wX wX #

Instances
PrimConstruct Prim # 
Instance details

Defined in Darcs.Patch.Prim.V1.Core

Methods

addfile :: FilePath -> Prim wX wY #

rmfile :: FilePath -> Prim wX wY #

adddir :: FilePath -> Prim wX wY #

rmdir :: FilePath -> Prim wX wY #

move :: FilePath -> FilePath -> Prim wX wY #

changepref :: String -> String -> String -> Prim wX wY #

hunk :: FilePath -> Int -> [ByteString] -> [ByteString] -> Prim wX wY #

tokreplace :: FilePath -> String -> String -> String -> Prim wX wY #

binary :: FilePath -> ByteString -> ByteString -> Prim wX wY #

primFromHunk :: FileHunk wX wY -> Prim wX wY #

anIdentity :: Prim wX wX #

PrimConstruct Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID.Core

Methods

addfile :: FilePath -> Prim wX wY #

rmfile :: FilePath -> Prim wX wY #

adddir :: FilePath -> Prim wX wY #

rmdir :: FilePath -> Prim wX wY #

move :: FilePath -> FilePath -> Prim wX wY #

changepref :: String -> String -> String -> Prim wX wY #

hunk :: FilePath -> Int -> [ByteString] -> [ByteString] -> Prim wX wY #

tokreplace :: FilePath -> String -> String -> String -> Prim wX wY #

binary :: FilePath -> ByteString -> ByteString -> Prim wX wY #

primFromHunk :: FileHunk wX wY -> Prim wX wY #

anIdentity :: Prim wX wX #

PrimConstruct Prim # 
Instance details

Defined in Darcs.Patch.V2.Prim

Methods

addfile :: FilePath -> Prim wX wY #

rmfile :: FilePath -> Prim wX wY #

adddir :: FilePath -> Prim wX wY #

rmdir :: FilePath -> Prim wX wY #

move :: FilePath -> FilePath -> Prim wX wY #

changepref :: String -> String -> String -> Prim wX wY #

hunk :: FilePath -> Int -> [ByteString] -> [ByteString] -> Prim wX wY #

tokreplace :: FilePath -> String -> String -> String -> Prim wX wY #

binary :: FilePath -> ByteString -> ByteString -> Prim wX wY #

primFromHunk :: FileHunk wX wY -> Prim wX wY #

anIdentity :: Prim wX wX #

PrimConstruct Prim # 
Instance details

Defined in Darcs.Patch.V1.Prim

Methods

addfile :: FilePath -> Prim wX wY #

rmfile :: FilePath -> Prim wX wY #

adddir :: FilePath -> Prim wX wY #

rmdir :: FilePath -> Prim wX wY #

move :: FilePath -> FilePath -> Prim wX wY #

changepref :: String -> String -> String -> Prim wX wY #

hunk :: FilePath -> Int -> [ByteString] -> [ByteString] -> Prim wX wY #

tokreplace :: FilePath -> String -> String -> String -> Prim wX wY #

binary :: FilePath -> ByteString -> ByteString -> Prim wX wY #

primFromHunk :: FileHunk wX wY -> Prim wX wY #

anIdentity :: Prim wX wX #

class PrimCanonize prim where #

Methods

tryToShrink :: FL prim wX wY -> FL prim wX wY #

tryToShrink ps simplifies ps by getting rid of self-cancellations or coalescing patches

Question (Eric Kow): what properties should this have? For example, the prim1 implementation only gets rid of the first self-cancellation it finds (as far as I can tell). Is that OK? Can we try harder?

tryShrinkingInverse :: FL prim wX wY -> Maybe (FL prim wX wY) #

tryShrinkingInverse ps deletes the first subsequence of primitive patches that is followed by the inverse subsequence, if one exists. If not, it returns Nothing

sortCoalesceFL :: FL prim wX wY -> FL prim wX wY #

sortCoalesceFL ps coalesces as many patches in ps as possible, sorting the results in some standard order.

canonize :: DiffAlgorithm -> prim wX wY -> FL prim wX wY #

It can sometimes be handy to have a canonical representation of a given patch. We achieve this by defining a canonical form for each patch type, and a function canonize which takes a patch and puts it into canonical form. This routine is used by the diff function to create an optimal patch (based on an LCS algorithm) from a simple hunk describing the old and new version of a file.

canonizeFL :: DiffAlgorithm -> FL prim wX wY -> FL prim wX wY #

canonizeFL ps puts a sequence of primitive patches into canonical form. Even if the patches are just hunk patches, this is not necessarily the same set of results as you would get if you applied the sequence to a specific tree and recalculated a diff.

Note that this process does not preserve the commutation behaviour of the patches and is therefore not appropriate for use when working with already recorded patches (unless doing amend-record or the like).

coalesce :: (prim :> prim) wX wY -> Maybe (FL prim wX wY) #

Instances
PrimCanonize Prim # 
Instance details

Defined in Darcs.Patch.Prim.V1.Coalesce

Methods

tryToShrink :: FL Prim wX wY -> FL Prim wX wY #

tryShrinkingInverse :: FL Prim wX wY -> Maybe (FL Prim wX wY) #

sortCoalesceFL :: FL Prim wX wY -> FL Prim wX wY #

canonize :: DiffAlgorithm -> Prim wX wY -> FL Prim wX wY #

canonizeFL :: DiffAlgorithm -> FL Prim wX wY -> FL Prim wX wY #

coalesce :: (Prim :> Prim) wX wY -> Maybe (FL Prim wX wY) #

PrimCanonize Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID.Coalesce

Methods

tryToShrink :: FL Prim wX wY -> FL Prim wX wY #

tryShrinkingInverse :: FL Prim wX wY -> Maybe (FL Prim wX wY) #

sortCoalesceFL :: FL Prim wX wY -> FL Prim wX wY #

canonize :: DiffAlgorithm -> Prim wX wY -> FL Prim wX wY #

canonizeFL :: DiffAlgorithm -> FL Prim wX wY -> FL Prim wX wY #

coalesce :: (Prim :> Prim) wX wY -> Maybe (FL Prim wX wY) #

PrimCanonize Prim # 
Instance details

Defined in Darcs.Patch.V2.Prim

Methods

tryToShrink :: FL Prim wX wY -> FL Prim wX wY #

tryShrinkingInverse :: FL Prim wX wY -> Maybe (FL Prim wX wY) #

sortCoalesceFL :: FL Prim wX wY -> FL Prim wX wY #

canonize :: DiffAlgorithm -> Prim wX wY -> FL Prim wX wY #

canonizeFL :: DiffAlgorithm -> FL Prim wX wY -> FL Prim wX wY #

coalesce :: (Prim :> Prim) wX wY -> Maybe (FL Prim wX wY) #

PrimCanonize Prim # 
Instance details

Defined in Darcs.Patch.V1.Prim

Methods

tryToShrink :: FL Prim wX wY -> FL Prim wX wY #

tryShrinkingInverse :: FL Prim wX wY -> Maybe (FL Prim wX wY) #

sortCoalesceFL :: FL Prim wX wY -> FL Prim wX wY #

canonize :: DiffAlgorithm -> Prim wX wY -> FL Prim wX wY #

canonizeFL :: DiffAlgorithm -> FL Prim wX wY -> FL Prim wX wY #

coalesce :: (Prim :> Prim) wX wY -> Maybe (FL Prim wX wY) #

class (Apply prim, Commute prim, Invert prim, Eq2 prim, IsHunk prim, PatchInspect prim, RepairToFL prim, Show2 prim, PrimConstruct prim, PrimCanonize prim, PrimClassify prim, PrimDetails prim, PrimApply prim) => PrimPatchCommon prim #

This class describes the abstract interface to primitive patches that is indepenent of the on-disk format.

Instances
PrimPatchCommon Prim # 
Instance details

Defined in Darcs.Patch.Prim.V1

PrimPatchCommon Prim # 
Instance details

Defined in Darcs.Patch.Prim.FileUUID

PrimPatchCommon Prim # 
Instance details

Defined in Darcs.Patch.V2.Prim

PrimPatchCommon Prim # 
Instance details

Defined in Darcs.Patch.V1.Prim