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

Darcs.Repository.Job

Synopsis

Documentation

data RepoJob rt a Source #

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.

Constructors

RepoJob (TreePatchJob rt a)

The most common RepoJob; the underlying action can accept any patch whose ApplyState is Tree.

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 p has PrimOf p = Prim. This was added to support darcsden, which inspects the internals of V1 prim patches. In future it should be replaced with a more abstract inspection API as part of PrimPatch.

OldRebaseJob (TreePatchJob rt a)

A job that works even if there is an old-style rebase in progress.

class IsPrimV1 p where Source #

Methods

toPrimV1 :: p wX wY -> Prim wX wY Source #

Instances

Instances details
IsPrimV1 Prim Source # 
Instance details

Defined in Darcs.Repository.Job

Methods

toPrimV1 :: Prim wX wY -> Prim0 wX wY Source #

IsPrimV1 Prim Source # 
Instance details

Defined in Darcs.Repository.Job

Methods

toPrimV1 :: Prim wX wY -> Prim0 wX wY Source #

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

withRepositoryLocation :: UseCache -> String -> RepoJob 'RO a -> IO a Source #

apply a given RepoJob to a repository in a given url