Merge branch 'pk/subsub-fetch-fix'

An earlier attempt to fix "git fetch --recurse-submodules" broke
another use case; revert it until a better fix is found.

* pk/subsub-fetch-fix:
  Revert "submodules: fix of regression on fetching of non-init subsub-repo"
diff --git a/submodule.c b/submodule.c
index eef5204e..b3bb59f 100644
--- a/submodule.c
+++ b/submodule.c
@@ -499,6 +499,12 @@
 		     DEFAULT_GIT_DIR_ENVIRONMENT);
 }
 
+static void prepare_submodule_repo_env_in_gitdir(struct strvec *out)
+{
+	prepare_submodule_repo_env_no_git_dir(out);
+	strvec_pushf(out, "%s=.", GIT_DIR_ENVIRONMENT);
+}
+
 /*
  * Initialize a repository struct for a submodule based on the provided 'path'.
  *
@@ -1449,8 +1455,8 @@
 		if (task->repo) {
 			struct strbuf submodule_prefix = STRBUF_INIT;
 			child_process_init(cp);
-			cp->dir = task->repo->worktree;
-			prepare_submodule_repo_env(&cp->env_array);
+			cp->dir = task->repo->gitdir;
+			prepare_submodule_repo_env_in_gitdir(&cp->env_array);
 			cp->git_cmd = 1;
 			if (!spf->quiet)
 				strbuf_addf(err, _("Fetching submodule %s%s\n"),
@@ -1499,9 +1505,9 @@
 			    spf->prefix, task->sub->path);
 
 		child_process_init(cp);
-		prepare_submodule_repo_env(&cp->env_array);
+		prepare_submodule_repo_env_in_gitdir(&cp->env_array);
 		cp->git_cmd = 1;
-		cp->dir = task->repo->worktree;
+		cp->dir = task->repo->gitdir;
 
 		strvec_init(&cp->args);
 		strvec_pushv(&cp->args, spf->args.v);
diff --git a/t/t5526-fetch-submodules.sh b/t/t5526-fetch-submodules.sh
index a7f6f9f..dd8e423 100755
--- a/t/t5526-fetch-submodules.sh
+++ b/t/t5526-fetch-submodules.sh
@@ -719,67 +719,4 @@
 	)
 '
 
-add_commit_push () {
-	dir="$1"
-	msg="$2"
-	shift 2
-	git -C "$dir" add "$@" &&
-	git -C "$dir" commit -a -m "$msg" &&
-	git -C "$dir" push
-}
-
-compare_refs_in_dir () {
-	fail= &&
-	if test "x$1" = 'x!'
-	then
-		fail='!' &&
-		shift
-	fi &&
-	git -C "$1" rev-parse --verify "$2" >expect &&
-	git -C "$3" rev-parse --verify "$4" >actual &&
-	eval $fail test_cmp expect actual
-}
-
-
-test_expect_success 'setup nested submodule fetch test' '
-	# does not depend on any previous test setups
-
-	for repo in outer middle inner
-	do
-		(
-			git init --bare $repo &&
-			git clone $repo ${repo}_content &&
-			echo "$repo" >"${repo}_content/file" &&
-			add_commit_push ${repo}_content "initial" file
-		) || return 1
-	done &&
-
-	git clone outer A &&
-	git -C A submodule add "$pwd/middle" &&
-	git -C A/middle/ submodule add "$pwd/inner" &&
-	add_commit_push A/middle/ "adding inner sub" .gitmodules inner &&
-	add_commit_push A/ "adding middle sub" .gitmodules middle &&
-
-	git clone outer B &&
-	git -C B/ submodule update --init middle &&
-
-	compare_refs_in_dir A HEAD B HEAD &&
-	compare_refs_in_dir A/middle HEAD B/middle HEAD &&
-	test -f B/file &&
-	test -f B/middle/file &&
-	! test -f B/middle/inner/file &&
-
-	echo "change on inner repo of A" >"A/middle/inner/file" &&
-	add_commit_push A/middle/inner "change on inner" file &&
-	add_commit_push A/middle "change on inner" inner &&
-	add_commit_push A "change on inner" middle
-'
-
-test_expect_success 'fetching a superproject containing an uninitialized sub/sub project' '
-	# depends on previous test for setup
-
-	git -C B/ fetch &&
-	compare_refs_in_dir A origin/master B origin/master
-'
-
 test_done