About a year ago, discussion on the sparse index integration of 'git grep' surfaced larger incompatibilities between sparse-checkout and submodules [1]. This series fixes one of the underlying issues to that incompatibility, which is that the worktree config of the submodule (where 'core.sparseCheckout', 'core.sparseCheckoutCone', and 'index.sparse' are set) is not used when operating on the submodule from its super project (e.g., in a command with '--recurse-submodules'). The outcome of this series is that 'extensions.worktreeConfig' and the contents of the repository's worktree config are read and applied to (and only to) the relevant repo when working in a super project/submodule setup. This alone doesn't fix sparse-checkout/submodule interoperability; the additional changes needed for that will be submitted in a later series. I'm also hoping this will help (or at least not hurt) the work to avoid use of global state in config parsing [2]. Thanks! * Victoria [1] https://lore.kernel.org/git/093827ae-41ef-5f7c-7829-647536ce1305@xxxxxxxxxx/ [2] https://lore.kernel.org/git/pull.1497.git.git.1682104398.gitgitgadget@xxxxxxxxx/ Victoria Dye (2): config: use gitdir to get worktree config repository: move 'repository_format_worktree_config' to repo scope builtin/config.c | 3 +- builtin/worktree.c | 2 +- config.c | 42 ++++++++++++++++++-------- environment.c | 1 - environment.h | 1 - repository.c | 1 + repository.h | 1 + setup.c | 10 ++++-- t/t3007-ls-files-recurse-submodules.sh | 34 +++++++++++++++++++++ worktree.c | 4 +-- 10 files changed, 78 insertions(+), 21 deletions(-) base-commit: 4a714b37029a4b63dbd22f7d7ed81f7a0d693680 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1536%2Fvdye%2Fvdye%2Fsubmodule-worktree-config-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1536/vdye/vdye/submodule-worktree-config-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/1536 -- gitgitgadget