From d62d6e2fcf0dba8f6029755c24a446890ac05ed6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 24 May 2021 12:05:35 -0400 Subject: [PATCH] note about a wart All code that uses associated files already deals with this problem, which used to be worse. Unfortunately I was not able to entirely eliminate it, although it happens in fewer cases now. --- Database/Keys.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Database/Keys.hs b/Database/Keys.hs index 7f80049157..a7ef6c7933 100644 --- a/Database/Keys.hs +++ b/Database/Keys.hs @@ -218,6 +218,14 @@ isInodeKnown i s = or <$> runReaderIO ((:[]) <$$> SQL.isInodeKnown i s) - filter. If a drop missed the file then the file is added back into the - annex. If a get missed the file then the clean filter populates the - file. + - + - There is a situation where, after this has run, the database can still + - contain associated files that have been deleted from the index. + - That happens when addAssociatedFile is used to record a newly + - added file, but that file then gets removed from the index before + - this is run. Eg, "git-annex add foo; git rm foo" + - So when using getAssociatedFiles, have to make sure the file still + - is an associated file. -} reconcileStaged :: H.DbQueue -> Annex () reconcileStaged qh = do -- 2.30.2