From: Junio C Hamano Date: Mon, 19 Sep 2016 20:51:40 +0000 (-0700) Subject: Merge branch 'jc/submodule-anchor-git-dir' into maint X-Git-Tag: v2.10.1~40 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/4c10c311376ef0cd279dace6a05e2101d60536e4?ds=inline;hp=-c Merge branch 'jc/submodule-anchor-git-dir' into maint Having a submodule whose ".git" repository is somehow corrupt caused a few commands that recurse into submodules loop forever. * jc/submodule-anchor-git-dir: submodule: avoid auto-discovery in prepare_submodule_repo_env() --- 4c10c311376ef0cd279dace6a05e2101d60536e4 diff --combined submodule.c index 1b5cdfb7e7,2801fbbe14..e8258f061a --- a/submodule.c +++ b/submodule.c @@@ -17,7 -17,7 +17,7 @@@ static int config_fetch_recurse_submodules = RECURSE_SUBMODULES_ON_DEMAND; static int parallel_jobs = 1; -static struct string_list changed_submodule_paths; +static struct string_list changed_submodule_paths = STRING_LIST_INIT_NODUP; static int initialized_fetch_ref_tips; static struct sha1_array ref_tips_before_fetch; static struct sha1_array ref_tips_after_fetch; @@@ -445,7 -445,7 +445,7 @@@ static void collect_submodules_from_dif struct diff_filepair *p = q->queue[i]; if (!S_ISGITLINK(p->two->mode)) continue; - if (submodule_needs_pushing(p->two->path, p->two->sha1)) + if (submodule_needs_pushing(p->two->path, p->two->oid.hash)) string_list_insert(needs_pushing, p->two->path); } } @@@ -577,7 -577,7 +577,7 @@@ static void submodule_collect_changed_c * being moved around. */ struct string_list_item *path; path = unsorted_string_list_lookup(&changed_submodule_paths, p->two->path); - if (!path && !is_submodule_commit_present(p->two->path, p->two->sha1)) + if (!path && !is_submodule_commit_present(p->two->path, p->two->oid.hash)) string_list_append(&changed_submodule_paths, xstrdup(p->two->path)); } else { /* Submodule is new or was moved here */ @@@ -1160,4 -1160,5 +1160,5 @@@ void prepare_submodule_repo_env(struct if (strcmp(*var, CONFIG_DATA_ENVIRONMENT)) argv_array_push(out, *var); } + argv_array_push(out, "GIT_DIR=.git"); }