From 2d3f18876550ee2e37a60aea1c0faaa369606ae0 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 15 Sep 2017 16:30:49 -0400 Subject: avoid unncessary db queries when exported directory can't be empty In rename foo/bar to foo/baz, foo can't be empty. In delete zxyyz, there's no exported directory (top doesn't count). --- Remote/Helper/Export.hs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'Remote') diff --git a/Remote/Helper/Export.hs b/Remote/Helper/Export.hs index 101124cef..3067ac837 100644 --- a/Remote/Helper/Export.hs +++ b/Remote/Helper/Export.hs @@ -151,18 +151,20 @@ adjustExportable r = case M.lookup "exporttree" (config r) of -- exported file, and after calling removeExportLocation and flushing the -- database. removeEmptyDirectories :: ExportActions Annex -> ExportHandle -> ExportLocation -> [Key] -> Annex Bool -removeEmptyDirectories ea db loc ks = case removeExportDirectory ea of - Nothing -> return True - Just removeexportdirectory -> do - ok <- allM (go removeexportdirectory) - (reverse (exportedDirectories loc)) - unless ok $ liftIO $ do - -- Add back to export database, so this is - -- tried again next time. - forM_ ks $ \k -> - addExportLocation db k loc - flushDbQueue db - return ok +removeEmptyDirectories ea db loc ks + | null (exportedDirectories loc) = return True + | otherwise = case removeExportDirectory ea of + Nothing -> return True + Just removeexportdirectory -> do + ok <- allM (go removeexportdirectory) + (reverse (exportedDirectories loc)) + unless ok $ liftIO $ do + -- Add back to export database, so this is + -- tried again next time. + forM_ ks $ \k -> + addExportLocation db k loc + flushDbQueue db + return ok where go removeexportdirectory d = ifM (liftIO $ isExportDirectoryEmpty db d) -- cgit v1.2.3