diff options
Diffstat (limited to 'Backend/Hash.hs')
-rw-r--r-- | Backend/Hash.hs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Backend/Hash.hs b/Backend/Hash.hs index 41368a5bb..3ff496271 100644 --- a/Backend/Hash.hs +++ b/Backend/Hash.hs @@ -44,6 +44,7 @@ genBackend hash = Just Backend , getKey = keyValue hash , fsckKey = Just $ checkKeyChecksum hash , canUpgradeKey = Just needsUpgrade + , fastMigrate = Just trivialMigrate } genBackendE :: Hash -> Maybe Backend @@ -129,6 +130,15 @@ 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 + | keyBackendName oldkey == name newbackend ++ "E" = Just $ oldkey + { keyName = keyHash oldkey + , keyBackendName = name newbackend + } + | otherwise = Nothing + hashFile :: Hash -> FilePath -> Integer -> Annex String hashFile hash file filesize = liftIO $ go hash where |