diff options
Diffstat (limited to 'Database')
-rw-r--r-- | Database/Export.hs | 23 |
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 |