resume properly when copying a file to/from a local git remote is interrupted

Probably this fixes a reversion, but I don't know what version broke it.

This does use withOtherTmp for a temp file that could be quite large.
Though albeit a reflink copy that will not actually take up any space
as long as the file it was copied from still exists. So if the copy cow
succeeds but git-annex is interrupted just before that temp file gets
renamed into the usual .git/annex/tmp/ location, there is a risk that
the other temp directory ends up cluttered with a larger temp file than
later. It will eventually be cleaned up, and the changes of this being
a problem are small, so this seems like an acceptable thing to do.

Sponsored-by: Shae Erisson on Patreon
This commit is contained in:
Joey Hess 2021-09-21 17:32:10 -04:00
parent c9dd63d67d
commit 63d508e885
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
5 changed files with 48 additions and 10 deletions

View file

@ -412,7 +412,7 @@ retrieveExportWithContentIdentifierM dir cow loc cid dest mkkey p =
f = exportPath dir loc
f' = fromRawFilePath f
docopy = ifM (liftIO $ tryCopyCoW cow f' dest p)
docopy = ifM (tryCopyCoW cow f' dest p)
( do
k <- mkkey
postcheckcow (return k)