assist: With --jobs, parallelize transferring content to/from remotes

Command.Add.seek starts concurrency with CommandStages. And for
Command.Sync, it needs TransferStages. So, to get both types of concurrency
for the two different parts, it either needs to change the type of
concurrency in between, or just call startConcurrency once for each.

It seems safe enough to call startConcurrency twice, because it does shut
down concurrency (mostly) at the end, and eg the old Annex.workers get
emptied.

Sponsored-by: unqueued on Patreon
This commit is contained in:
Joey Hess 2023-07-05 12:24:04 -04:00
parent c2c2abe6ca
commit 3c1d18cb3b
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 7 additions and 4 deletions

View file

@ -6,6 +6,7 @@ git-annex (10.20230627) UNRELEASED; urgency=medium
* reinject: Added --guesskeys option.
* diffdriver: Added --text option for easy diffing of the contents of
annexed text files.
* assist: With --jobs, parallelize transferring content to/from remotes.
-- Joey Hess <id@joeyh.name> Mon, 26 Jun 2023 13:10:40 -0400

View file

@ -21,7 +21,7 @@ cmd = withAnnexOptions [jobsOption, backendOption] $
(myseek <--< Command.Sync.optParser Command.Sync.AssistMode)
myseek :: Command.Sync.SyncOptions -> CommandSeek
myseek o = startConcurrency transferStages $ do
myseek o = do
-- Changes to top of repository, so when this is run in a
-- subdirectory, it will still default to adding files anywhere in
-- the working tree.
@ -35,7 +35,7 @@ myseek o = startConcurrency transferStages $ do
, Command.Add.checkGitIgnoreOption = CheckGitIgnore True
, Command.Add.dryRunOption = DryRun False
}
waitForAllRunningCommandActions
finishCommandActions
-- Flush added files to index so they will be committed.
Annex.Queue.flush

View file

@ -260,10 +260,10 @@ seek o = do
prepMerge
startConcurrency transferStages (seek' o)
seek' o
seek' :: SyncOptions -> CommandSeek
seek' o = do
seek' o = startConcurrency transferStages $ do
let withbranch a = a =<< getCurrentBranch
remotes <- syncRemotes (syncWith o)

View file

@ -32,3 +32,5 @@ local repository version: 10
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
git-annex is **marvellous** and a game-changer for all my workflows 👍
> [[fixed|done]] --[[Joey]]