migrate: Support migrating v1 SHA keys to v2 SHA keys with size information that can be used for free space checking.

This commit is contained in:
Joey Hess 2011-03-23 17:57:10 -04:00
parent ad08273ac5
commit 6246b807f7
9 changed files with 54 additions and 10 deletions

View file

@ -29,6 +29,7 @@ import Types
import UUID
import Messages
import Trust
import Key
backend :: Backend Annex
backend = Backend {
@ -38,7 +39,8 @@ backend = Backend {
retrieveKeyFile = copyKeyFile,
removeKey = checkRemoveKey,
hasKey = inAnnex,
fsckKey = checkKeyOnly
fsckKey = checkKeyOnly,
upgradableKey = checkUpgradableKey
}
mustProvide :: a
@ -159,6 +161,12 @@ getNumCopies Nothing = do
where
config = "annex.numcopies"
{- Ideally, all keys have file size metadata. Old keys may not. -}
checkUpgradableKey :: Key -> Annex Bool
checkUpgradableKey key
| keySize key == Nothing = return True
| otherwise = return False
{- This is used to check that numcopies is satisfied for the key on fsck.
- This trusts data in the the location log, and so can check all keys, even
- those with data not present in the current annex.

View file

@ -30,7 +30,9 @@ backend = Backend {
-- similarly, keys are always assumed to be out there on the web
hasKey = dummyOk,
-- and nothing needed to fsck
fsckKey = dummyFsck
fsckKey = dummyFsck,
-- and key upgrade not needed
upgradableKey = \_ -> return False
}
-- cannot generate url from filename