diff options
author | Joey Hess <joey@kitenet.net> | 2011-03-23 17:25:28 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-03-23 17:25:28 -0400 |
commit | 8beb72e20604b0d2cc6359e75ed4eac45fcd1081 (patch) | |
tree | 8780cf25d5f304321d984bef9ea90946f3dc3576 /Command/Migrate.hs | |
parent | af45a62980b6b231225e4456e602eec4dfc4e04b (diff) |
migrate: Bugfix for case when migrating a file results in a key that is already present in .git/annex/objects.
For example, this could happen if using SHA1 and a file with content
"foo" were added to that backend. Then a file with "content" foo were
migrated from the WORM backend.
Assume that, if a backend assigned the same key, the already annexed
content must be the same. So, the "old" content can be reused.
Diffstat (limited to 'Command/Migrate.hs')
-rw-r--r-- | Command/Migrate.hs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Command/Migrate.hs b/Command/Migrate.hs index 56147113b..38dfd06b2 100644 --- a/Command/Migrate.hs +++ b/Command/Migrate.hs @@ -8,6 +8,7 @@ module Command.Migrate where import Control.Monad.State (liftIO) +import Control.Monad (unless) import System.Posix.Files import System.Directory @@ -58,7 +59,8 @@ perform file oldkey newbackend = do ok <- getViaTmpUnchecked newkey $ \t -> do -- Make a hard link to the old backend's -- cached key, to avoid wasting disk space. - liftIO $ createLink src t + exists <- liftIO $ doesFileExist t + unless exists $ liftIO $ createLink src t return True if ok then do |