From 3c1d18cb3b2a7340c1450e3f69e38a02a4b720f4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 5 Jul 2023 12:24:04 -0400 Subject: [PATCH] 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 --- CHANGELOG | 1 + Command/Assist.hs | 4 ++-- Command/Sync.hs | 4 ++-- ..._39__git_annex_assist__39___doesn__39__t_honor_--jobs.mdwn | 2 ++ 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index eb9878da7a..448dd62c4e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 Mon, 26 Jun 2023 13:10:40 -0400 diff --git a/Command/Assist.hs b/Command/Assist.hs index acf73f5f52..bcdac9ae67 100644 --- a/Command/Assist.hs +++ b/Command/Assist.hs @@ -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 diff --git a/Command/Sync.hs b/Command/Sync.hs index 91b6881911..42fa246824 100644 --- a/Command/Sync.hs +++ b/Command/Sync.hs @@ -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) diff --git a/doc/bugs/__39__git_annex_assist__39___doesn__39__t_honor_--jobs.mdwn b/doc/bugs/__39__git_annex_assist__39___doesn__39__t_honor_--jobs.mdwn index 10e3152036..8ef89034ef 100644 --- a/doc/bugs/__39__git_annex_assist__39___doesn__39__t_honor_--jobs.mdwn +++ b/doc/bugs/__39__git_annex_assist__39___doesn__39__t_honor_--jobs.mdwn @@ -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]] -- 2.30.2