diff options
-rw-r--r-- | Command/Import.hs | 35 | ||||
-rw-r--r-- | debian/changelog | 2 |
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 |