From 2963de7dade0a314a5fc626114fe8de364c4ff13 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 4 Jan 2015 12:33:10 -0400 Subject: Avoid re-checksumming when migrating from hash to hashE backend. Closes: #774494 --- Backend/Hash.hs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'Backend') diff --git a/Backend/Hash.hs b/Backend/Hash.hs index 7c47a4abc..e50eca516 100644 --- a/Backend/Hash.hs +++ b/Backend/Hash.hs @@ -1,4 +1,4 @@ -{- git-annex hashing backends +{- git-tnnex hashing backends - - Copyright 2011-2013 Joey Hess - @@ -132,13 +132,20 @@ needsUpgrade :: Key -> Bool needsUpgrade key = "\\" `isPrefixOf` keyHash key || any (not . validExtension) (takeExtensions $ keyName key) -{- Fast migration from hashE to hash backend. (Optimisation) -} -trivialMigrate :: Key -> Backend -> Maybe Key -trivialMigrate oldkey newbackend +trivialMigrate :: Key -> Backend -> AssociatedFile -> Maybe Key +trivialMigrate oldkey newbackend afile + {- Fast migration from hashE to hash backend. -} | keyBackendName oldkey == name newbackend ++ "E" = Just $ oldkey { keyName = keyHash oldkey , keyBackendName = name newbackend } + {- Fast migration from hash to hashE backend. -} + | keyBackendName oldkey ++"E" == name newbackend = case afile of + Nothing -> Nothing + Just file -> Just $ oldkey + { keyName = keyHash oldkey ++ selectExtension file + , keyBackendName = name newbackend + } | otherwise = Nothing hashFile :: Hash -> FilePath -> Integer -> Annex String -- cgit v1.2.3