submodule.c: fetch in submodules git directory instead of in worktree

Keep the properties introduced in 10f5c52656 (submodule: avoid auto-discovery in prepare_submodule_repo_env(), 2016-09-01), by fixating the git directory of the submodule. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Stefan Beller committed Nov 28, 2018 at 16:27 UTC a62387b3fc9f5aeeb04a2db278121d33a9caafa7
1 file changed +8 -2
submodule.c
+8 -2
@@ -494,6 +494,12 @@ void prepare_submodule_repo_env(struct argv_array *out)
494 DEFAULT_GIT_DIR_ENVIRONMENT);
495 }
496
497 +static void prepare_submodule_repo_env_in_gitdir(struct argv_array *out)
498 +{
499 + prepare_submodule_repo_env_no_git_dir(out);
500 + argv_array_pushf(out, "%s=.", GIT_DIR_ENVIRONMENT);
501 +}
502 +
503 /* Helper function to display the submodule header line prior to the full
504 * summary output. If it can locate the submodule objects directory it will
505 * attempt to lookup both the left and right commits and put them into the
@@ -1327,8 +1333,8 @@ static int get_next_submodule(struct child_process *cp,
1333 repo = get_submodule_repo_for(spf->r, submodule);
1334 if (repo) {
1335 child_process_init(cp);
1330 - cp->dir = xstrdup(repo->worktree);
1331 - prepare_submodule_repo_env(&cp->env_array);
1336 + cp->dir = xstrdup(repo->gitdir);
1337 + prepare_submodule_repo_env_in_gitdir(&cp->env_array);
1338 cp->git_cmd = 1;
1339 if (!spf->quiet)
1340 strbuf_addf(err, "Fetching submodule %s%s\n",