diff options
author | Joey Hess <joeyh@joeyh.name> | 2017-09-12 14:19:26 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2017-09-12 14:21:15 -0400 |
commit | c2dd2a28a55709d598fef4e05ac7bfd6291479b5 (patch) | |
tree | 5e4b938be43b1df34de4a1399974d9fb10b9f3d7 | |
parent | d9b80aca317a2484df5922d589b7b5e3bc30aa4a (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.
-rw-r--r-- | Command/Export.hs | 11 | ||||
-rw-r--r-- | Logs/Export.hs | 2 |
2 files changed, 8 insertions, 5 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 diff --git a/Logs/Export.hs b/Logs/Export.hs index 3ba77cd24..2327d70d1 100644 --- a/Logs/Export.hs +++ b/Logs/Export.hs @@ -84,7 +84,7 @@ recordExportBeginning remoteuuid newtree = do . M.lookup u . simpleMap . parseLogNew parseExportLog <$> Annex.Branch.get exportLog - let new = old { incompleteExportedTreeish = newtree:incompleteExportedTreeish old } + let new = old { incompleteExportedTreeish = nub (newtree:incompleteExportedTreeish old) } Annex.Branch.change exportLog $ showLogNew formatExportLog . changeLog c u (ExportLog new remoteuuid) |