git-annex/Types
Joey Hess 53882ab4a7
make WorkerStage an open type
Rather than limiting it to PerformStage and CleanupStage, this opens it
up so any number of stages can be added as needed by commands.

Each concurrent command has a set of stages that it uses, and only
transitions between those can block waiting for a free slot in the
worker pool. Calling enteringStage for some other stage does not block,
and has very little overhead.

Note that while before the Annex state was duplicated on the first call
to commandAction, this now happens earlier, in startConcurrency.
That means that seek stage actions should that use startConcurrency
and then modify Annex state won't modify the state of worker threads
they then start. I audited all of them, and only Command.Seek
did so; prepMerge changes the working directory and so has to come
before startConcurrency.

Also, the remote list is built before duplicating the state, which means
that it gets built earlier now than it used to. This would only have an
effect of making commands that end up not needing to perform any actions
unncessary build the remote list (only when they're run with concurrency
enable), but that's a minor overhead compared to commands seeking
through the work tree and determining they don't need to do anything.
2019-06-19 13:05:03 -04:00
..
ActionItem.hs finish CommandStart transition 2019-06-12 13:24:01 -04:00
AdjustedBranch.hs refactor getCurrentBranch 2018-10-19 17:29:18 -04:00
Availability.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Backend.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Benchmark.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
BranchState.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
CleanupActions.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Command.hs make WorkerStage an open type 2019-06-19 13:05:03 -04:00
Concurrency.hs run download checksum verification in separate job pool 2019-06-17 14:58:02 -04:00
Creds.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Crypto.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
DeferredParse.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
DesktopNotify.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Difference.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Distribution.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Export.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
FileMatcher.hs honor preferred content when importing 2019-05-21 14:38:06 -04:00
GitConfig.hs rename annex.security.allowed-http-addresses 2019-05-30 12:43:40 -04:00
Group.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Import.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Key.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
KeySource.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
LockCache.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Messages.hs get rid of implicitMessages state 2019-06-12 14:01:41 -04:00
MetaData.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Mime.hs Added mimeencoding= term to annex.largefiles expressions. 2019-04-30 12:17:22 -04:00
NumCopies.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
RefSpec.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Remote.hs clarify 2019-06-04 21:49:53 -04:00
RepoVersion.hs v7 2018-10-25 18:24:23 -04:00
ScheduledActivity.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
StandardGroups.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
StoreRetrieve.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Test.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Transfer.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
TrustLevel.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
UrlContents.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
UUID.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
View.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
WorkerPool.hs make WorkerStage an open type 2019-06-19 13:05:03 -04:00