diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-11-13 14:37:22 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-11-13 14:37:22 +0100 |
commit | abb4824d13a44f68d1bbaf6726945983230771f9 (patch) | |
tree | 316449048983aa8a4503af46cd450199a69b1078 /builtin/grep.c | |
parent | Merge branch 'nb/worktree-api-doc' (diff) | |
parent | t/helper: add test-submodule-nested-repo-config (diff) | |
download | git-abb4824d13a44f68d1bbaf6726945983230771f9.tar.xz git-abb4824d13a44f68d1bbaf6726945983230771f9.zip |
Merge branch 'ao/submodule-wo-gitmodules-checked-out'
The submodule support has been updated to read from the blob at
HEAD:.gitmodules when the .gitmodules file is missing from the
working tree.
* ao/submodule-wo-gitmodules-checked-out:
t/helper: add test-submodule-nested-repo-config
submodule: support reading .gitmodules when it's not in the working tree
submodule: add a helper to check if it is safe to write to .gitmodules
t7506: clean up .gitmodules properly before setting up new scenario
submodule: use the 'submodule--helper config' command
submodule--helper: add a new 'config' subcommand
t7411: be nicer to future tests and really clean things up
t7411: merge tests 5 and 6
submodule: factor out a config_set_in_gitmodules_file_gently function
submodule: add a print_config_from_gitmodules() helper
Diffstat (limited to 'builtin/grep.c')
-rw-r--r-- | builtin/grep.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/builtin/grep.c b/builtin/grep.c index d8508ddf79..56e4a11052 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -422,11 +422,23 @@ static int grep_submodule(struct grep_opt *opt, struct repository *superproject, struct repository submodule; int hit; - if (!is_submodule_active(superproject, path)) + /* + * NEEDSWORK: submodules functions need to be protected because they + * access the object store via config_from_gitmodules(): the latter + * uses get_oid() which, for now, relies on the global the_repository + * object. + */ + grep_read_lock(); + + if (!is_submodule_active(superproject, path)) { + grep_read_unlock(); return 0; + } - if (repo_submodule_init(&submodule, superproject, path)) + if (repo_submodule_init(&submodule, superproject, path)) { + grep_read_unlock(); return 0; + } repo_read_gitmodules(&submodule); @@ -440,7 +452,6 @@ static int grep_submodule(struct grep_opt *opt, struct repository *superproject, * store is no longer global and instead is a member of the repository * object. */ - grep_read_lock(); add_to_alternates_memory(submodule.objects->objectdir); grep_read_unlock(); |