summaryrefslogtreecommitdiff
path: root/Command/Fsck.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-02-20 14:45:17 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-02-20 14:45:17 -0400
commit518f5b76d0aeb59f817178c1a09ec8bde7a715a3 (patch)
tree9bcead76a92b89da08bb35ac0152faaea352fe7b /Command/Fsck.hs
parent313e2e4b3ba805d59a71cf8b7617db3602daafb4 (diff)
fsck: When run with --all or --unused, while .gitattributes annex.numcopies cannot be honored since it's operating on keys instead of files, make it honor the global numcopies setting, and the annex.numcopies git config setting.
Diffstat (limited to 'Command/Fsck.hs')
-rw-r--r--Command/Fsck.hs21
1 files changed, 11 insertions, 10 deletions
diff --git a/Command/Fsck.hs b/Command/Fsck.hs
index d58ce2826..d21f2191d 100644
--- a/Command/Fsck.hs
+++ b/Command/Fsck.hs
@@ -68,7 +68,7 @@ seek ps = do
from <- getOptionField fsckFromOption Remote.byNameWithUUID
i <- getIncremental
withKeyOptions
- (startKey i)
+ (\k -> startKey i k =<< getNumCopies)
(withFilesInGit $ whenAnnexed $ start from i)
ps
@@ -162,18 +162,19 @@ performRemote key file backend numcopies remote =
)
dummymeter _ = noop
-startKey :: Incremental -> Key -> CommandStart
-startKey inc key = case Backend.maybeLookupBackendName (Types.Key.keyBackendName key) of
- Nothing -> stop
- Just backend -> runFsck inc (key2file key) key $ performAll key backend
+startKey :: Incremental -> Key -> NumCopies -> CommandStart
+startKey inc key numcopies =
+ case Backend.maybeLookupBackendName (Types.Key.keyBackendName key) of
+ Nothing -> stop
+ Just backend -> runFsck inc (key2file key) key $
+ performKey key backend numcopies
-{- Note that numcopies cannot be checked in --all mode, since we do not
- - have associated filenames to look up in the .gitattributes file. -}
-performAll :: Key -> Backend -> Annex Bool
-performAll key backend = check
+performKey :: Key -> Backend -> NumCopies -> Annex Bool
+performKey key backend numcopies = check
[ verifyLocationLog key (key2file key)
, checkKeySize key
, checkBackend backend key Nothing
+ , checkKeyNumCopies key (key2file key) numcopies
]
check :: [Annex Bool] -> Annex Bool
@@ -357,7 +358,7 @@ checkBackendOr' bad backend key file postcheck =
, return True
)
-checkKeyNumCopies :: Key -> FilePath -> NumCopies -> Annex Bool
+checkKeyNumCopies :: Key -> String -> NumCopies -> Annex Bool
checkKeyNumCopies key file numcopies = do
(untrustedlocations, safelocations) <- trustPartition UnTrusted =<< Remote.keyLocations key
let present = NumCopies (length safelocations)