Leftex->giveup$"Failed removing old database directory "++db++" during upgrade ("++showex++") -- delete that and re-run git-annex to finish the upgrade."
Right()->return()
-- Populate the new keys database with associated files and inode caches.
--
-- The information is queried from git. The index contains inode cache
-- information for all staged files, so that is used.
--
-- Note that typically the inode cache of annex objects is also stored in
-- the keys database. This does not add it though, because it's possible
-- that any annex object has gotten modified. The most likely way would be
-- due to annex.thin having been set at some point in the past, bypassing
-- the usual safeguards against object modification. When a worktree file
-- is still a hardlink to an annex object, then they have the same inode
-- cache, so using the inode cache from the git index will get the right
-- thing added in that case. But there are cases where the annex object's
-- inode cache is not added here, most notably when it's not unlocked.
-- The result will be more work needing to be done by isUnmodified and
-- by inAnnex (the latter only when annex.thin is set) to verify the
-- annex object. That work is only done once, and then the object will
-- finally get its inode cached.
populateKeysDb::Annex()
populateKeysDb=do
top<-fromRepoGit.repoPath
(l,cleanup)<-inRepo$LsFiles.inodeCaches[top]
forM_l$\case
(_f,Nothing)->giveup"Unable to parse git ls-files --debug output while upgrading git-annex sqlite databases."