Display progress bar when getting files from export remotes

And moved the progress bar display into storeExport as well.

This commit was sponsored by John Pellman on Patreon.
This commit is contained in:
Joey Hess 2019-01-31 13:34:12 -04:00
parent 4f50a21137
commit 7b9701675e
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 13 additions and 7 deletions

View file

@ -8,6 +8,7 @@ git-annex (7.20190130) UNRELEASED; urgency=medium
This allows downloads of files that were exported to such a remote
before versioning was enabled on it.
* Improved speed of S3 remote by only loading S3 creds once.
* Display progress bar when getting files from export remotes.
-- Joey Hess <id@joeyh.name> Wed, 30 Jan 2019 12:30:22 -0400

View file

@ -28,7 +28,6 @@ import Annex.LockFile
import Logs.Location
import Logs.Export
import Database.Export
import Messages.Progress
import Config
import Utility.Tmp
import Utility.Metered
@ -233,20 +232,18 @@ performExport r db ek af contentsha loc = do
let rollback = void $
performUnexport r db [ek] loc
sendAnnex k rollback $ \f ->
metered Nothing k (return $ Just f) $ \_ m -> do
let m' = combineMeterUpdate pm m
storer f k loc m'
storer f k loc pm
, do
showNote "not available"
return False
)
-- Sending a non-annexed file.
GitKey sha1k -> metered Nothing sha1k (return Nothing) $ \_ m ->
GitKey sha1k ->
withTmpFile "export" $ \tmp h -> do
b <- catObject contentsha
liftIO $ L.hPut h b
liftIO $ hClose h
storer tmp sha1k loc m
storer tmp sha1k loc nullMeterUpdate
if sent
then next $ cleanupExport r db ek loc True
else stop

View file

@ -1,6 +1,6 @@
{- helpers for special remotes
-
- Copyright 2011-2018 Joey Hess <id@joeyh.name>
- Copyright 2011-2019 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
@ -157,6 +157,8 @@ specialRemoteCfg c = SpecialRemoteCfg (getChunkConfig c) True
-- Modifies a base Remote to support both chunking and encryption,
-- which special remotes typically should support.
--
-- Handles progress displays when displayProgress is set.
specialRemote :: RemoteModifier
specialRemote c = specialRemote' (specialRemoteCfg c) c
@ -192,6 +194,12 @@ specialRemote' cfg c preparestorer prepareretriever prepareremover preparecheckp
, whereisKey = if noChunks (chunkConfig cfg) && not isencrypted
then whereisKey baser
else Nothing
, exportActions = (exportActions baser)
{ storeExport = \f k l p -> displayprogress p k (Just f) $
storeExport (exportActions baser) f k l
, retrieveExport = \k l f p -> displayprogress p k Nothing $
retrieveExport (exportActions baser) k l f
}
}
cip = cipherKey c (gitconfig baser)
isencrypted = isJust (extractCipher c)