aboutsummaryrefslogtreecommitdiff
path: root/Database
diff options
context:
space:
mode:
Diffstat (limited to 'Database')
-rw-r--r--Database/Export.hs23
1 files changed, 15 insertions, 8 deletions
diff --git a/Database/Export.hs b/Database/Export.hs
index 7dae408fa..ad106f84e 100644
--- a/Database/Export.hs
+++ b/Database/Export.hs
@@ -22,7 +22,10 @@ module Database.Export (
getExportedLocation,
isExportDirectoryEmpty,
getExportTree,
+ addExportTree,
+ removeExportTree,
updateExportTree,
+ updateExportTree',
ExportedId,
ExportTreeId,
ExportedDirectoryId,
@@ -183,18 +186,22 @@ updateExportTree h old new = do
(diff, cleanup) <- inRepo $
Git.DiffTree.diffTreeRecursive old new
forM_ diff $ \i -> do
- let loc = mkExportLocation $ getTopFilePath $
- Git.DiffTree.file i
srcek <- getek (Git.DiffTree.srcsha i)
- case srcek of
- Nothing -> return ()
- Just k -> liftIO $ removeExportTree h (asKey k) loc
dstek <- getek (Git.DiffTree.dstsha i)
- case dstek of
- Nothing -> return ()
- Just k -> liftIO $ addExportTree h (asKey k) loc
+ updateExportTree' h srcek dstek i
void $ liftIO cleanup
where
getek sha
| sha == nullSha = return Nothing
| otherwise = Just <$> exportKey sha
+
+updateExportTree' :: ExportHandle -> Maybe ExportKey -> Maybe ExportKey -> Git.DiffTree.DiffTreeItem-> Annex ()
+updateExportTree' h srcek dstek i = do
+ case srcek of
+ Nothing -> return ()
+ Just k -> liftIO $ removeExportTree h (asKey k) loc
+ case dstek of
+ Nothing -> return ()
+ Just k -> liftIO $ addExportTree h (asKey k) loc
+ where
+ loc = mkExportLocation $ getTopFilePath $ Git.DiffTree.file i