darcs-2.18.4: a distributed, interactive, smart revision control system
Safe HaskellSafe-Inferred
LanguageHaskell2010

Darcs.Patch.Set

Synopsis

Documentation

data PatchSet p wStart wY where Source #

The patches in a repository are stored in chunks broken up at "clean" tags. A tag is clean if the only patches before it in the current repository ordering are ones that the tag depends on (either directly or indirectly). Each chunk is stored in a separate inventory file on disk.

A PatchSet represents a repo's history as the list of patches since the last clean tag, and then a list of patch lists each delimited by clean tags.

Because the invariants about clean tags can only be maintained if a PatchSet contains the whole history, the first witness is always forced to be Origin. The type still has two witnesses so it can easily be used with combinators like :> and Fork.

The history is lazily loaded from disk so does not normally need to be all kept in memory.

Constructors

PatchSet :: RL (Tagged p) Origin wX -> RL (PatchInfoAnd p) wX wY -> PatchSet p Origin wY 

Instances

Instances details
Ident (PatchSet p) Source # 
Instance details

Defined in Darcs.Patch.Set

Methods

ident :: PatchSet p wX wY -> PatchId (PatchSet p) Source #

Show2 p => Show2 (PatchSet p) Source # 
Instance details

Defined in Darcs.Patch.Set

Methods

showDict2 :: ShowDict (PatchSet p wX wY) Source #

Show2 p => Show1 (PatchSet p wStart) Source # 
Instance details

Defined in Darcs.Patch.Set

Methods

showDict1 :: Dict (Show (PatchSet p wStart wX)) Source #

Show2 p => Show (PatchSet p wStart wY) Source # 
Instance details

Defined in Darcs.Patch.Set

Methods

showsPrec :: Int -> PatchSet p wStart wY -> ShowS #

show :: PatchSet p wStart wY -> String #

showList :: [PatchSet p wStart wY] -> ShowS #

type PatchId (PatchSet p) Source # 
Instance details

Defined in Darcs.Patch.Set

data Tagged p wX wZ where Source #

A Tagged is a single chunk of a PatchSet. It has a PatchInfo representing a clean tag, the hash of the previous inventory (if it exists), and the list of patches since that previous inventory.

Constructors

Tagged :: RL (PatchInfoAnd p) wX wY -> PatchInfoAnd p wY wZ -> Maybe InventoryHash -> Tagged p wX wZ 

Instances

Instances details
Show2 p => Show2 (Tagged p) Source # 
Instance details

Defined in Darcs.Patch.Set

Methods

showDict2 :: ShowDict (Tagged p wX wY) Source #

Show2 p => Show1 (Tagged p wX) Source # 
Instance details

Defined in Darcs.Patch.Set

Methods

showDict1 :: Dict (Show (Tagged p wX wX0)) Source #

Show2 p => Show (Tagged p wX wZ) Source # 
Instance details

Defined in Darcs.Patch.Set

Methods

showsPrec :: Int -> Tagged p wX wZ -> ShowS #

show :: Tagged p wX wZ -> String #

showList :: [Tagged p wX wZ] -> ShowS #

type SealedPatchSet p wStart = Sealed (PatchSet p wStart) Source #

data Origin Source #

Origin is a type used to represent the initial context of a repo.

progressPatchSet :: String -> PatchSet p wStart wX -> PatchSet p wStart wX Source #

Runs a progress action for each tag and patch in a given PatchSet, using the passed progress message. Does not alter the PatchSet.

patchSetTags :: PatchSet p wX wY -> [String] Source #

The tag names of all tags of a given PatchSet.

appendPSFL :: PatchSet p wStart wX -> FL (PatchInfoAnd p) wX wY -> PatchSet p wStart wY Source #

appendPSFL takes a PatchSet and a FL of patches that "follow" the PatchSet, and concatenates the patches into the PatchSet.

patchSet2RL :: PatchSet p wStart wX -> RL (PatchInfoAnd p) wStart wX Source #

patchSet2RL takes a PatchSet and returns an equivalent, linear RL of patches.

patchSet2FL :: PatchSet p wStart wX -> FL (PatchInfoAnd p) wStart wX Source #

patchSet2FL takes a PatchSet and returns an equivalent, linear FL of patches.

patchSetSnoc :: PatchSet p wX wY -> PatchInfoAnd p wY wZ -> PatchSet p wX wZ Source #

patchSetSplit :: PatchSet p wX wY -> (PatchSet p :> RL (PatchInfoAnd p)) wX wY Source #

Split a PatchSet before the latest known clean tag. The left part is what comes before the tag, the right part is the tag and its non-dependencies.

patchSetDrop :: Int -> PatchSet p wStart wX -> SealedPatchSet p wStart Source #

Drop the last n patches from the given PatchSet.