This commit is contained in:
Joey Hess 2014-11-03 13:17:55 -04:00
parent 46180eab4d
commit bf57edbdd6
2 changed files with 19 additions and 1 deletions

View file

@ -65,7 +65,7 @@ statusDirect f = checkstatus =<< liftIO (catchMaybeIO $ getFileStatus f)
where where
checkstatus Nothing = return $ Just DeletedFile checkstatus Nothing = return $ Just DeletedFile
checkstatus (Just s) checkstatus (Just s)
-- Git thinks that present direct mode files modifed, -- Git thinks that present direct mode files are modifed,
-- so have to check. -- so have to check.
| not (isSymbolicLink s) = checkkey s =<< catKeyFile f | not (isSymbolicLink s) = checkkey s =<< catKeyFile f
| otherwise = Just <$> checkNew f | otherwise = Just <$> checkNew f

View file

@ -0,0 +1,18 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2014-11-03T17:08:50Z"
content="""
`git status` looks at the index and work tree. In an indirect mode
repository, `git annex status` does too, and is not significantly slower.
In direct mode, `git annex status` has to look up from git the key
that corresponds to each file in the work tree. This is the main
thing that slows it down.
(See the code for details, it's quite clear.)
The best workaround is proably to pass git-annex status a subdirectory
that you're interested in, so it can only look at the contents of that one
directory.
"""]]