diff options
author | Victoria Dye <vdye@github.com> | 2023-05-26 04:33:00 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-05-26 07:53:41 +0300 |
commit | 3867f6d650c89230ae7393e2d57160ccc14758c7 (patch) | |
tree | 967a2971733b17b584c01943116e39264203f38a /t/t3007-ls-files-recurse-submodules.sh | |
parent | 9b6b06c159e0a389aaafbce91dd85bb5244ac5ad (diff) |
repository: move 'repository_format_worktree_config' to repo scope
Move 'repository_format_worktree_config' out of the global scope and into
the 'repository' struct. This change is similar to how
'repository_format_partial_clone' was moved in ebaf3bcf1ae (repository: move
global r_f_p_c to repo struct, 2021-06-17), adding it to the 'repository'
struct and updating 'setup.c' & 'repository.c' functions to assign the value
appropriately.
The primary goal of this change is to be able to load the worktree config of
a submodule depending on whether that submodule - not its superproject - has
'extensions.worktreeConfig' enabled. To ensure 'do_git_config_sequence()'
has access to the newly repo-scoped configuration, add a 'struct repository'
argument to 'do_git_config_sequence()' and pass it the 'repo' value from
'config_with_options()'.
Finally, add/update tests in 't3007-ls-files-recurse-submodules.sh' to
verify 'extensions.worktreeConfig' is read an used independently by
superprojects and submodules.
Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3007-ls-files-recurse-submodules.sh')
-rwxr-xr-x | t/t3007-ls-files-recurse-submodules.sh | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/t/t3007-ls-files-recurse-submodules.sh b/t/t3007-ls-files-recurse-submodules.sh index a3e2675142..7308a3d4e2 100755 --- a/t/t3007-ls-files-recurse-submodules.sh +++ b/t/t3007-ls-files-recurse-submodules.sh @@ -309,14 +309,29 @@ test_expect_success '--recurse-submodules parses submodule worktree config' ' test_config -C submodule extensions.worktreeConfig true && test_config -C submodule --worktree index.sparse "invalid non-boolean value" && - # NEEDSWORK: the extensions.worktreeConfig is set globally based on - # superproject, so we need to enable it in the superproject. - test_config extensions.worktreeConfig true && - test_must_fail git ls-files --recurse-submodules 2>err && grep "bad boolean config value" err ' +test_expect_success '--recurse-submodules submodules ignore super project worktreeConfig extension' ' + # Enable worktree config in both super project & submodule, set an + # invalid config in the submodule worktree config + test_config extensions.worktreeConfig true && + test_config -C submodule extensions.worktreeConfig true && + test_config -C submodule --worktree index.sparse "invalid non-boolean value" && + + # Now, disable the worktree config in the submodule. Note that we need + # to manually re-enable extensions.worktreeConfig when the test is + # finished, otherwise the test_unconfig of index.sparse will not work. + test_unconfig -C submodule extensions.worktreeConfig && + test_when_finished "git -C submodule config extensions.worktreeConfig true" && + + # With extensions.worktreeConfig disabled in the submodule, the invalid + # worktree config is not picked up. + git ls-files --recurse-submodules 2>err && + ! grep "bad boolean config value" err +' + test_incompatible_with_recurse_submodules () { test_expect_success "--recurse-submodules and $1 are incompatible" " test_must_fail git ls-files --recurse-submodules $1 2>actual && |