verify associated files when checking numcopies
Most of this is just refactoring. But, handleDropsFrom did not verify that associated files from the keys db were still accurate, and has now been fixed to. A minor improvement to this would be to avoid calling catKeyFile twice on the same file, when getting the numcopies and mincopies value, in the common case where the same file has the highest value for both. But, it avoids checking every associated file, so it will scale well to lots of dups already. Sponsored-by: Kevin Mueller on Patreon
This commit is contained in:
parent
d164434679
commit
af9fdf5dba
5 changed files with 68 additions and 10 deletions
|
@ -14,6 +14,7 @@ module Database.Keys (
|
|||
closeDb,
|
||||
addAssociatedFile,
|
||||
getAssociatedFiles,
|
||||
getAssociatedFilesIncluding,
|
||||
getAssociatedKey,
|
||||
removeAssociatedFile,
|
||||
storeInodeCaches,
|
||||
|
@ -155,6 +156,15 @@ addAssociatedFile k f = runWriterIO $ SQL.addAssociatedFile k f
|
|||
getAssociatedFiles :: Key -> Annex [TopFilePath]
|
||||
getAssociatedFiles = runReaderIO . SQL.getAssociatedFiles
|
||||
|
||||
{- Include a known associated file along with any recorded in the database. -}
|
||||
getAssociatedFilesIncluding :: AssociatedFile -> Key -> Annex [RawFilePath]
|
||||
getAssociatedFilesIncluding afile k = do
|
||||
g <- Annex.gitRepo
|
||||
l <- map (`fromTopFilePath` g) <$> getAssociatedFiles k
|
||||
return $ case afile of
|
||||
AssociatedFile (Just f) -> f : filter (/= f) l
|
||||
AssociatedFile Nothing -> l
|
||||
|
||||
{- Gets any keys that are on record as having a particular associated file.
|
||||
- (Should be one or none but the database doesn't enforce that.) -}
|
||||
getAssociatedKey :: TopFilePath -> Annex [Key]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue