summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2017-09-12 14:19:26 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2017-09-12 14:21:15 -0400
commitc2dd2a28a55709d598fef4e05ac7bfd6291479b5 (patch)
tree5e4b938be43b1df34de4a1399974d9fb10b9f3d7 /Command
parentd9b80aca317a2484df5922d589b7b5e3bc30aa4a (diff)
leave export logged as incomplete if initial renames fail
This way, the temp files that might be left due to failure will be cleaned up next time. Also, nub the list of incomplete exports to avoid repeatedly adding the same tree to it when running export repeatedly when it's failing. This commit was supported by the NSF-funded DataLad project.
Diffstat (limited to 'Command')
-rw-r--r--Command/Export.hs11
1 files changed, 7 insertions, 4 deletions
diff --git a/Command/Export.hs b/Command/Export.hs
index 52355e69d..8f1a6f149 100644
--- a/Command/Export.hs
+++ b/Command/Export.hs
@@ -10,6 +10,7 @@
module Command.Export where
import Command
+import qualified Annex
import qualified Git
import qualified Git.DiffTree
import qualified Git.LsTree
@@ -144,10 +145,12 @@ seek o = do
-- Waiting until now to record the export guarantees that,
-- if this export is interrupted, there are no files left over
-- from a previous export, that are not part of this export.
- recordExport (uuid r) $ ExportChange
- { oldTreeish = map exportedTreeish old
- , newTreeish = new
- }
+ c <- Annex.getState Annex.errcounter
+ when (c == 0) $
+ recordExport (uuid r) $ ExportChange
+ { oldTreeish = map exportedTreeish old
+ , newTreeish = new
+ }
-- Export everything that is not yet exported.
(l, cleanup') <- inRepo $ Git.LsTree.lsTree new