improve storage of redundant ContentIdentifiers

When a ContentIdentifier is already recorded, don't add it to the log
again, and avoid updating the log.
This commit is contained in:
Joey Hess 2020-12-22 12:00:11 -04:00
parent 7f7094a7cb
commit 06ef1b7d68
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38

View file

@ -32,12 +32,16 @@ recordContentIdentifier :: RemoteStateHandle -> ContentIdentifier -> Key -> Anne
recordContentIdentifier (RemoteStateHandle u) cid k = do
c <- liftIO currentVectorClock
config <- Annex.getGitConfig
Annex.Branch.change (remoteContentIdentifierLogFile config k) $
buildLog . addcid c . parseLog
Annex.Branch.maybeChange (remoteContentIdentifierLogFile config k) $
addcid c . parseLog
where
addcid c l = changeMapLog c u (cid :| contentIdentifierList (M.lookup u m)) l
addcid c v
| cid `elem` l = Nothing -- no change needed
| otherwise = Just $ buildLog $
changeMapLog c u (cid :| l) v
where
m = simpleMap l
m = simpleMap v
l = contentIdentifierList (M.lookup u m)
-- | Get all known content identifiers for a key.
getContentIdentifiers :: Key -> Annex [(RemoteStateHandle, [ContentIdentifier])]