make startup scan for deleted files work in direct mode

git add --update cannot be used, because it'll stage typechanged direct
mode files. Intead, use ls-files to find deleted files, and stage them
ourselves.

It seems that no commit was made before when the scan staged deleted files.
(Probably masked since if files were added, a commit happened then..)
Now that I'm doing the staging, I was also able to fix that bug.
This commit is contained in:
Joey Hess 2012-12-24 14:24:13 -04:00
parent c6d2bbe402
commit 95db595e91
2 changed files with 23 additions and 8 deletions

View file

@ -27,9 +27,10 @@ import Utility.Types.DirWatcher
import Utility.Lsof
import qualified Annex
import qualified Annex.Queue
import qualified Git.Command
import qualified Git
import qualified Git.UpdateIndex
import qualified Git.HashObject
import qualified Git.LsFiles as LsFiles
import qualified Backend
import Annex.Content
import Annex.CatFile
@ -83,9 +84,15 @@ startupScan scanner = do
-- Notice any files that were deleted before
-- watching was started.
liftAnnex $ do
inRepo $ Git.Command.run "add" [Param "--update"]
showAction "started"
top <- liftAnnex $ fromRepo Git.repoPath
(fs, cleanup) <- liftAnnex $ inRepo $ LsFiles.deleted [top]
forM_ fs $ \f -> do
liftAnnex $ Annex.Queue.addUpdateIndex =<<
inRepo (Git.UpdateIndex.unstageFile f)
maybe noop recordChange =<< madeChange f RmChange
void $ liftIO $ cleanup
liftAnnex $ showAction "started"
modifyDaemonStatus_ $ \s -> s { scanComplete = True }