use status --ignore-submodules in configureSmudgeFilter

Speed up git-annex upgrade (from v5) and init in a repository that has
submodules. Setting the config does not affect the submodules, so avoid
the work of getting status in them, which may involve using the smudge
filter etc.

Sponsored-By: the NIH-funded NICEMAN (ReproNim TR&D3) project
This commit is contained in:
Joey Hess 2022-12-20 16:02:42 -04:00
parent 0b2dd374d8
commit eb8e0594bb
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 21 additions and 1 deletions

View file

@ -9,6 +9,8 @@ git-annex (10.20221213) UNRELEASED; urgency=medium
* Added --anything (and --nothing). Eg, git-annex find --anything * Added --anything (and --nothing). Eg, git-annex find --anything
will list all annexed files whether or not the content is present. will list all annexed files whether or not the content is present.
This is slightly faster and clearer than --include=* or --exclude=* This is slightly faster and clearer than --include=* or --exclude=*
* Speed up git-annex upgrade (from v5) and init in a repository that has
submodules.
-- Joey Hess <id@joeyh.name> Mon, 12 Dec 2022 13:04:54 -0400 -- Joey Hess <id@joeyh.name> Mon, 12 Dec 2022 13:04:54 -0400

View file

@ -29,7 +29,11 @@ configureSmudgeFilter = unlessM (fromRepo Git.repoIsLocalBare) $ do
-- unexpected changes when the file is checked into git or annex -- unexpected changes when the file is checked into git or annex
-- counter to the annex.largefiles configuration. -- counter to the annex.largefiles configuration.
-- Avoid that problem by running git status now. -- Avoid that problem by running git status now.
inRepo $ Git.Command.runQuiet [Param "status", Param "--porcelain"] inRepo $ Git.Command.runQuiet
[ Param "status"
, Param "--porcelain"
, Param "--ignore-submodules"
]
setConfig (ConfigKey "filter.annex.smudge") "git-annex smudge -- %f" setConfig (ConfigKey "filter.annex.smudge") "git-annex smudge -- %f"
setConfig (ConfigKey "filter.annex.clean") "git-annex smudge --clean -- %f" setConfig (ConfigKey "filter.annex.clean") "git-annex smudge --clean -- %f"

View file

@ -18,3 +18,4 @@ I guess it could have used some flavor of `--ignore-submodules` with its invocat
[[!meta author=yoh]] [[!meta author=yoh]]
[[!tag projects/repronim]] [[!tag projects/repronim]]
> [[fixed|done]] --[[Joey]]

View file

@ -0,0 +1,13 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2022-12-20T19:48:52Z"
content="""
This happens on upgrade from a v5 repository, which calls
configureSmudgeFilter. [[!commit 401a79675ba2f125545ec9ec77376cb4b965fa4a]]
explains why it needs to run status there.
So, it will indeed be ok to pass --ignore-submodules, since each submodule
that is a git-annex repository will get upgraded in its own time,
and will run configureSmudgeFilter then.
"""]]