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

Safe HaskellNone
LanguageHaskell98

Darcs.Match

Description

First matcher, Second matcher and Nonrange matcher

When we match for patches, we have a PatchSet, of which we want a subset. This subset is formed by the patches in a given interval which match a given criterion. If we represent time going left to right, then we have (up to) three Matchers:

  • the firstMatcher is the left bound of the interval,
  • the secondMatcher is the right bound, and
  • the nonrangeMatcher is the criterion we use to select among patches in the interval.

Synopsis

Documentation

matchFirstPatchset :: RepoPatch p => [DarcsFlag] -> PatchSet p start x -> SealedPatchSet p start Source

matchFirstPatchset fs ps returns the part of ps before its first matcher, ie the one that comes first dependencywise. Hence, patches in matchFirstPatchset fs ps are the context for the ones we don't want.

matchSecondPatchset :: RepoPatch p => [DarcsFlag] -> PatchSet p start x -> SealedPatchSet p start Source

matchSecondPatchset fs ps returns the part of ps before its second matcher, ie the one that comes last dependencywise.

matchPatch :: RepoPatch p => [DarcsFlag] -> PatchSet p start x -> Sealed2 (Named p) Source

matchAPatch :: Patchy p => [DarcsFlag] -> Named p x y -> Bool Source

matchAPatch fs p tells whether p matches the matchers in the flags fs

matchAPatchread :: Patchy p => [DarcsFlag] -> PatchInfoAnd p x y -> Bool Source

matchAPatchread fs p tells whether p matches the matchers in the flags listed in fs.

firstMatch :: [DarcsFlag] -> Bool Source

firstMatch fs tells whether fs implies a "first match", that is if we match against patches from a point in the past on, rather than against all patches since the creation of the repository.

secondMatch :: [DarcsFlag] -> Bool Source

secondMatch fs tells whether fs implies a "second match", that is if we match against patches up to a point in the past on, rather than against all patches until now.

haveNonrangeMatch :: [DarcsFlag] -> Bool Source

haveNonrangeMatch flags tells whether there is a flag in flags which corresponds to a match that is "non-range". Thus, --match, --patch and --index make haveNonrangeMatch true, but not --from-patch or --to-patch.

havePatchsetMatch :: [DarcsFlag] -> Bool Source

havePatchsetMatch flags tells whether there is a "patchset match" in the flag list. A patchset match is --match or --patch, or --context, but not --from-patch nor (!) --index. Question: Is it supposed not to be a subset of haveNonrangeMatch?

nonrangeMatcher :: Patchy p => [DarcsFlag] -> Maybe (Matcher p) Source

nonrangeMatcher is the criterion that is used to match against patches in the interval. It is 'Just m' when the --patch, --match, --tag options are passed (or their plural variants).

matchExists :: Matcher p -> PatchSet p start x -> Bool Source

matchExists m ps tells whether there is a patch matching m in ps

applyNInv :: (RepoPatch p, ApplyMonad m (ApplyState p)) => Int -> PatchSet p Origin x -> m () Source

applyNInv n ps applies the inverse of the last n patches of ps.