diff options
author | Joey Hess <joey@kitenet.net> | 2013-04-24 18:04:59 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-04-24 18:04:59 -0400 |
commit | 86b579672609c9ced054eaf51b26addb38e22b64 (patch) | |
tree | 48c7dd07d92307ac5ae291fd62040fc67745b679 /Assistant/Threads | |
parent | f9e5b8ce4522e1de5b7a55391365136b34af9946 (diff) |
get rid of need to run pre-commit hook when assistant commits in direct mode
That hook updates associated file bookkeeping info for direct mode.
But, everything already called addAssociatedFile when adding/changing a
file. It only needed to also call removeAssociatedFile when deleting a file,
or a directory.
This should make bulk adds faster, by some possibly significant amount.
Bulk removals may be a little slower, since it has to use catKeyFile now
on each removed file, but will still be faster than adds.
Diffstat (limited to 'Assistant/Threads')
-rw-r--r-- | Assistant/Threads/Committer.hs | 20 | ||||
-rw-r--r-- | Assistant/Threads/Watcher.hs | 5 |
2 files changed, 14 insertions, 11 deletions
diff --git a/Assistant/Threads/Committer.hs b/Assistant/Threads/Committer.hs index 17eefd3f5..c07109489 100644 --- a/Assistant/Threads/Committer.hs +++ b/Assistant/Threads/Committer.hs @@ -157,23 +157,21 @@ commitStaged = do case v of Left _ -> return False Right _ -> do - direct <- isDirect - let params = nomessage $ catMaybes - [ Just $ Param "--quiet" - {- In indirect mode, avoid running the - - usual git-annex pre-commit hook; - - watch does the same symlink fixing, - - and we don't want to deal with unlocked - - files in these commits. -} - , if direct then Nothing else Just $ Param "--no-verify" - ] {- Empty commits may be made if tree changes cancel - each other out, etc. Git returns nonzero on those, - so don't propigate out commit failures. -} void $ inRepo $ catchMaybeIO . - Git.Command.runQuiet (Param "commit" : params) + Git.Command.runQuiet + (Param "commit" : nomessage params) return True where + params = + [ Param "--quiet" + {- Avoid running the usual pre-commit hook; + - the Watcher does the same symlink fixing, + - and direct mode bookkeeping updating. -} + , Param "--no-verify" + ] nomessage ps | Git.Version.older "1.7.2" = Param "-m" : Param "autocommit" : ps diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs index 4201a6404..58c4c2e30 100644 --- a/Assistant/Threads/Watcher.hs +++ b/Assistant/Threads/Watcher.hs @@ -300,6 +300,11 @@ onDel file _ = do onDel' :: FilePath -> Annex () onDel' file = do + whenM isDirect $ do + mkey <- catKeyFile file + case mkey of + Nothing -> noop + Just key -> void $ removeAssociatedFile key file Annex.Queue.addUpdateIndex =<< inRepo (Git.UpdateIndex.unstageFile file) |