Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data RepoJob rt a
- = RepoJob (TreePatchJob rt a)
- | V1Job (V1PatchJob rt a)
- | V2Job (V2PatchJob rt a)
- | PrimV1Job (PrimV1PatchJob rt a)
- | OldRebaseJob (TreePatchJob rt a)
- class IsPrimV1 p where
- withRepoLock :: UseCache -> UMask -> RepoJob 'RW a -> IO a
- withOldRepoLock :: RepoJob 'RW a -> IO a
- withRepoLockCanFail :: UseCache -> RepoJob 'RO () -> IO ()
- withRepository :: UseCache -> RepoJob 'RO a -> IO a
- withRepositoryLocation :: UseCache -> String -> RepoJob 'RO a -> IO a
- withUMaskFlag :: UMask -> IO a -> IO a
Documentation
A RepoJob
wraps up an action to be performed with a repository. Because
repositories can contain different types of patches, such actions typically
need to be polymorphic in the kind of patch they work on. RepoJob
is used
to wrap up the polymorphism, and the various functions that act on a
RepoJob
are responsible for instantiating the underlying action with the
appropriate patch type.
RepoJob (TreePatchJob rt a) | The most common |
V1Job (V1PatchJob rt a) | A job that only works on darcs 1 patches |
V2Job (V2PatchJob rt a) | A job that only works on darcs 2 patches |
PrimV1Job (PrimV1PatchJob rt a) | A job that works on any repository where the patch type |
OldRebaseJob (TreePatchJob rt a) | A job that works even if there is an old-style rebase in progress. |
withRepoLock :: UseCache -> UMask -> RepoJob 'RW a -> IO a Source #
Apply a given RepoJob to a repository in the current working directory. However, before doing the job, take the repo lock and initializes a repo transaction.
withOldRepoLock :: RepoJob 'RW a -> IO a Source #
run a lock-taking job in an old-fashion repository. only used by `darcs optimize upgrade`.
withRepoLockCanFail :: UseCache -> RepoJob 'RO () -> IO () Source #
Apply a given RepoJob to a repository in the current working directory, taking a lock. If lock not takeable, do nothing. If old-fashioned repository, do nothing. The job must not touch pending or pending.tentative, because there is no call to revertRepositoryChanges. This entry point is currently only used for attemptCreatePatchIndex.
withRepository :: UseCache -> RepoJob 'RO a -> IO a Source #
apply a given RepoJob to a repository in the current working directory