summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Import.hs35
-rw-r--r--debian/changelog2
2 files changed, 17 insertions, 20 deletions
diff --git a/Command/Import.hs b/Command/Import.hs
index 196f27738..305396c7f 100644
--- a/Command/Import.hs
+++ b/Command/Import.hs
@@ -67,14 +67,8 @@ start :: DuplicateMode -> (FilePath, FilePath) -> CommandStart
start mode (srcfile, destfile) =
ifM (liftIO $ isRegularFile <$> getSymbolicLinkStatus srcfile)
( do
- isdup <- do
- backend <- chooseBackend destfile
- let ks = KeySource srcfile srcfile Nothing
- v <- genKey ks backend
- case v of
- Just (k, _) -> not . null <$> keyLocations k
- _ -> return False
- case pickaction isdup of
+ ma <- pickaction
+ case ma of
Nothing -> stop
Just a -> do
showStart "import" destfile
@@ -101,15 +95,16 @@ start mode (srcfile, destfile) =
, notoverwriting "(use --force to override)"
)
notoverwriting why = error $ "not overwriting existing " ++ destfile ++ " " ++ why
- pickaction isdup = case mode of
- DeDuplicate
- | isdup -> Just deletedup
- | otherwise -> Just importfile
- CleanDuplicates
- | isdup -> Just deletedup
- | otherwise -> Nothing
- SkipDuplicates
- | isdup -> Nothing
- | otherwise -> Just importfile
- _ -> Just importfile
-
+ checkdup dupa notdupa = do
+ backend <- chooseBackend destfile
+ let ks = KeySource srcfile srcfile Nothing
+ v <- genKey ks backend
+ isdup <- case v of
+ Just (k, _) -> not . null <$> keyLocations k
+ _ -> return False
+ return $ if isdup then dupa else notdupa
+ pickaction = case mode of
+ DeDuplicate -> checkdup (Just deletedup) (Just importfile)
+ CleanDuplicates -> checkdup (Just deletedup) Nothing
+ SkipDuplicates -> checkdup Nothing (Just importfile)
+ _ -> return (Just importfile)
diff --git a/debian/changelog b/debian/changelog
index 2d3312787..9ff4d2fe5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -10,6 +10,8 @@ git-annex (5.20150206) UNRELEASED; urgency=medium
--smallerthan, --largerthan
* The file matching options are now only accepted by commands that
can actually use them, instead of by all commands.
+ * import: Avoid checksumming file twice when run in the default
+ or --duplicate mode.
-- Joey Hess <id@joeyh.name> Fri, 06 Feb 2015 13:57:08 -0400