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.
This commit is contained in:
Joey Hess 2011-03-23 17:25:28 -04:00
parent af45a62980
commit 8beb72e206
2 changed files with 5 additions and 1 deletions

View file

@ -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

2
debian/changelog vendored
View file

@ -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 <joeyh@debian.org> Tue, 22 Mar 2011 16:52:00 -0400