From: Joey Hess Date: Mon, 22 Feb 2021 16:56:11 +0000 (-0400) Subject: unannex, uninit: Avoid running git rm once per annexed file, for a large speedup. X-Git-Tag: archive/raspbian/10.20250416-2+rpi1~1^2~98^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=62d5a73bdde4c72861ccbc3466566d2405a4705a;p=git-annex.git unannex, uninit: Avoid running git rm once per annexed file, for a large speedup. --- diff --git a/CHANGELOG b/CHANGELOG index 794bc5d71b..cd27e8a44d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -28,6 +28,8 @@ git-annex (8.20210128) UNRELEASED; urgency=medium rather than doing it in a second pass. * Bugfix: fsck --from a ssh remote did not actually check that the content on the remote is not corrupted. + * unannex, uninit: Avoid running git rm once per annexed file, + for a large speedup. -- Joey Hess Thu, 28 Jan 2021 12:34:32 -0400 diff --git a/Command/Unannex.hs b/Command/Unannex.hs index 0b383dd9b1..690a946be6 100644 --- a/Command/Unannex.hs +++ b/Command/Unannex.hs @@ -1,6 +1,6 @@ {- git-annex command - - - Copyright 2010-2013 Joey Hess + - Copyright 2010-2021 Joey Hess - - Licensed under the GNU AGPL version 3 or higher. -} @@ -10,7 +10,7 @@ module Command.Unannex where import Command import qualified Annex import Annex.Perms -import qualified Git.Command +import qualified Annex.Queue import Utility.CopyFile import qualified Database.Keys import Git.FilePath @@ -42,14 +42,13 @@ start si file key = perform :: RawFilePath -> Key -> CommandPerform perform file key = do liftIO $ removeFile (fromRawFilePath file) - inRepo $ Git.Command.run - [ Param "rm" - , Param "--cached" + Annex.Queue.addCommand [] "rm" + [ Param "--cached" , Param "--force" , Param "--quiet" , Param "--" - , File (fromRawFilePath file) ] + [fromRawFilePath file] next $ cleanup file key cleanup :: RawFilePath -> Key -> CommandCleanup diff --git a/doc/todo/optimization_needed__58___slow_uninit.mdwn b/doc/todo/optimization_needed__58___slow_uninit.mdwn index 0b7e2d8e37..aeae0cbf1b 100644 --- a/doc/todo/optimization_needed__58___slow_uninit.mdwn +++ b/doc/todo/optimization_needed__58___slow_uninit.mdwn @@ -20,3 +20,5 @@ git annex 8.20210127-g42239bc [[!meta author=yoh]] [[!tag projects/datalad]] + +> [[fixed|done]] --[[Joey]] diff --git a/doc/todo/optimization_needed__58___slow_uninit/comment_1_3d01d125ffea8dd247e68f716a9c636a._comment b/doc/todo/optimization_needed__58___slow_uninit/comment_1_3d01d125ffea8dd247e68f716a9c636a._comment new file mode 100644 index 0000000000..3c81325ad1 --- /dev/null +++ b/doc/todo/optimization_needed__58___slow_uninit/comment_1_3d01d125ffea8dd247e68f716a9c636a._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2021-02-22T16:45:46Z" + content=""" +Also unannex is slow the same way. Looks like it can easily be fixed using +git command queueing; I see no reason the rm needs to happen before +changes to the working tree, as --cached makes the rm only operate on the +index. + +Rest seem fast enough. +"""]]