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.

This commit is contained in:
Joey Hess 2011-05-31 14:50:41 -04:00
parent 6e6e77f9c0
commit fafe60768f
2 changed files with 8 additions and 7 deletions

View file

@ -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

3
debian/changelog vendored
View file

@ -1,6 +1,9 @@
git-annex (0.20110523) UNRELEASED; urgency=low
* Minor bugfixes and error message improvements.
* 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.
-- Joey Hess <joeyh@debian.org> Sat, 28 May 2011 22:29:37 -0400