diff options
author | 2015-06-09 14:08:57 -0400 | |
---|---|---|
committer | 2015-06-09 14:08:57 -0400 | |
commit | f80592f1603fdfdde4b092e9880646ded505163a (patch) | |
tree | 680902863f0f8805345e89f25f3a29eac4ec198b /Command | |
parent | 951992f3535a33eaa867410e5985835c59f6b22a (diff) |
fsck: Ignore keys that are known to be dead when running in --all mode or a in a bare repo. Otherwise, still reports files with lost contents, even if the content is dead.
Diffstat (limited to 'Command')
-rw-r--r-- | Command/Fsck.hs | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/Command/Fsck.hs b/Command/Fsck.hs index 26c788d56..6dccb285b 100644 --- a/Command/Fsck.hs +++ b/Command/Fsck.hs @@ -99,7 +99,7 @@ perform key file backend numcopies = check , verifyDirectMode key file , checkKeySize key , checkBackend backend key (Just file) - , checkKeyNumCopies key file numcopies + , checkKeyNumCopies key (Just file) numcopies ] {- To fsck a remote, the content is retrieved to a tmp file, @@ -125,7 +125,7 @@ performRemote key file backend numcopies remote = [ verifyLocationLogRemote key file remote present , checkKeySizeRemote key remote localcopy , checkBackendRemote backend key remote localcopy - , checkKeyNumCopies key file numcopies + , checkKeyNumCopies key (Just file) numcopies ] withtmp a = do pid <- liftIO getPID @@ -160,7 +160,7 @@ performKey key backend numcopies = check [ verifyLocationLog key (key2file key) , checkKeySize key , checkBackend backend key Nothing - , checkKeyNumCopies key (key2file key) numcopies + , checkKeyNumCopies key Nothing numcopies ] check :: [Annex Bool] -> Annex Bool @@ -343,15 +343,21 @@ checkBackendOr' bad backend key file postcheck = , return True ) -checkKeyNumCopies :: Key -> String -> NumCopies -> Annex Bool -checkKeyNumCopies key file numcopies = do +checkKeyNumCopies :: Key -> AssociatedFile -> NumCopies -> Annex Bool +checkKeyNumCopies key afile numcopies = do + let file = fromMaybe (key2file key) afile (untrustedlocations, safelocations) <- trustPartition UnTrusted =<< Remote.keyLocations key let present = NumCopies (length safelocations) if present < numcopies - then do - ppuuids <- Remote.prettyPrintUUIDs "untrusted" untrustedlocations - warning $ missingNote file present numcopies ppuuids - return False + then ifM (pure (isNothing afile) <&&> checkDead key) + ( do + showLongNote $ "This key is dead, skipping." + return True + , do + ppuuids <- Remote.prettyPrintUUIDs "untrusted" untrustedlocations + warning $ missingNote file present numcopies ppuuids + return False + ) else return True missingNote :: String -> NumCopies -> NumCopies -> String -> String |