From 8beb72e20604b0d2cc6359e75ed4eac45fcd1081 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 23 Mar 2011 17:25:28 -0400 Subject: 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. --- Command/Migrate.hs | 4 +++- debian/changelog | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) 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 diff --git a/debian/changelog b/debian/changelog index f124296cc..9a3ffbafa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,8 @@ git-annex (0.20110321) UNRELEASED; urgency=low * unused: In fast mode, just show all existing temp files as unused, and avoid expensive scan for other unused content. * Fix space leak in fsck and drop commands. + * migrate: Bugfix for case when migrating a file results in a key that + is already present in .git/annex/objects. -- Joey Hess Tue, 22 Mar 2011 16:52:00 -0400 -- cgit v1.2.3