From fafe60768f98ed33b8aae6cba147a15a6608eaaf Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 31 May 2011 14:50:41 -0400 Subject: Massively sped up `git annex lock` by avoiding use of the uber-slow `git reset`, and only running `git checkout` once, even when many files are being locked. --- Command/Lock.hs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'Command') diff --git a/Command/Lock.hs b/Command/Lock.hs index 1ae488227..e21792143 100644 --- a/Command/Lock.hs +++ b/Command/Lock.hs @@ -12,8 +12,7 @@ import System.Directory import Command import Messages -import qualified Annex -import qualified GitRepo as Git +import qualified AnnexQueue import Utility command :: [Command] @@ -31,9 +30,8 @@ start (file, _) = do perform :: FilePath -> CommandPerform perform file = do liftIO $ removeFile file - g <- Annex.gitRepo - -- first reset the file to drop any changes checked into the index - liftIO $ Git.run g "reset" [Params "-q --", File file] - -- checkout the symlink - liftIO $ Git.run g "checkout" [Param "--", File file] + -- Checkout from HEAD to get rid of any changes that might be + -- staged in the index, and get back to the previous symlink to + -- the content. + AnnexQueue.add "checkout" [Param "HEAD", Param "--"] file next $ return True -- no cleanup needed -- cgit v1.2.3