public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, fastcat@gmail.com,
	Eric Sunshine <sunshine@sunshineco.com>,
	Jeff King <peff@peff.net>, Patrick Steinhardt <ps@pks.im>,
	Phillip Wood <phillip.wood123@gmail.com>,
	Derrick Stolee <stolee@gmail.com>,
	Derrick Stolee <stolee@gmail.com>
Subject: [PATCH v3 2/4] run-command: extract clear_local_repo_env helper
Date: Mon, 02 Mar 2026 15:36:43 +0000	[thread overview]
Message-ID: <13d783dbbdd77b14fed651f0508fa0e668d98c63.1772465805.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2056.v3.git.1772465805.gitgitgadget@gmail.com>

From: Derrick Stolee <stolee@gmail.com>

The current prepare_other_repo_env() does two distinct things:

 1. Strip certain known environment variables that should be set by a
    child process based on a different repository.

 2. Set the GIT_DIR variable to avoid repository discovery.

The second item is valuable for child processes that operate on
submodules, where the repo discovery could be mistaken for the parent
repository.

In the next change, we will see an important case where only the first
item is required as the GIT_DIR discovery should happen naturally from
the '-C' parameter in the child process.

Signed-off-by: Derrick Stolee <stolee@gmail.com>
---
 run-command.c | 7 ++++++-
 run-command.h | 7 +++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/run-command.c b/run-command.c
index e3e02475cc..7858a0ef0a 100644
--- a/run-command.c
+++ b/run-command.c
@@ -1847,7 +1847,7 @@ int run_auto_maintenance(int quiet)
 	return run_command(&maint);
 }
 
-void prepare_other_repo_env(struct strvec *env, const char *new_git_dir)
+void clear_local_repo_env(struct strvec *env)
 {
 	const char * const *var;
 
@@ -1856,6 +1856,11 @@ void prepare_other_repo_env(struct strvec *env, const char *new_git_dir)
 		    strcmp(*var, CONFIG_COUNT_ENVIRONMENT))
 			strvec_push(env, *var);
 	}
+}
+
+void prepare_other_repo_env(struct strvec *env, const char *new_git_dir)
+{
+	clear_local_repo_env(env);
 	strvec_pushf(env, "%s=%s", GIT_DIR_ENVIRONMENT, new_git_dir);
 }
 
diff --git a/run-command.h b/run-command.h
index 0df25e445f..76b29d4832 100644
--- a/run-command.h
+++ b/run-command.h
@@ -509,6 +509,13 @@ struct run_process_parallel_opts
  */
 void run_processes_parallel(const struct run_process_parallel_opts *opts);
 
+/**
+ * Unset all local-repo GIT_* variables in env; see local_repo_env in
+ * environment.h. GIT_CONFIG_PARAMETERS and GIT_CONFIG_COUNT are preserved
+ * to pass -c and --config-env options from the parent process.
+ */
+void clear_local_repo_env(struct strvec *env);
+
 /**
  * Convenience function which prepares env for a command to be run in a
  * new repo. This adds all GIT_* environment variables to env with the
-- 
gitgitgadget


  parent reply	other threads:[~2026-03-02 15:36 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-24  3:32 [PATCH 0/2] for-each-repo: work correctly in a worktree Derrick Stolee via GitGitGadget
2026-02-24  3:32 ` [PATCH 1/2] for-each-repo: stop using the_repository Derrick Stolee via GitGitGadget
2026-02-24  9:18   ` Patrick Steinhardt
2026-02-24 12:07     ` Derrick Stolee
2026-02-24  3:32 ` [PATCH 2/2] for-each-repo: work correctly in a worktree Derrick Stolee via GitGitGadget
2026-02-24  3:34   ` Eric Sunshine
2026-02-24  9:18     ` Jeff King
2026-02-24 12:11       ` Derrick Stolee
2026-02-25 13:23         ` Jeff King
2026-02-24  9:18     ` Patrick Steinhardt
2026-02-24 21:35 ` [PATCH v2 0/2] " Derrick Stolee via GitGitGadget
2026-02-24 21:35   ` [PATCH v2 1/2] for-each-repo: test outside of repo context Derrick Stolee via GitGitGadget
2026-02-24 21:35   ` [PATCH v2 2/2] for-each-repo: work correctly in a worktree Derrick Stolee via GitGitGadget
2026-02-24 21:47     ` Junio C Hamano
2026-02-25 11:44       ` Derrick Stolee
2026-02-25 13:13         ` Jeff King
2026-02-26 15:29           ` Derrick Stolee
2026-02-26 16:21             ` Junio C Hamano
2026-02-26 18:14               ` Phillip Wood
2026-02-27 19:41                 ` Junio C Hamano
2026-02-27 22:28                   ` Derrick Stolee
2026-02-27 22:45               ` Jeff King
2026-02-27 22:42             ` Jeff King
2026-03-02 15:31               ` Derrick Stolee
2026-03-02 18:09                 ` Jeff King
2026-03-02 15:36   ` [PATCH v3 0/4] " Derrick Stolee via GitGitGadget
2026-03-02 15:36     ` [PATCH v3 1/4] for-each-repo: test outside of repo context Derrick Stolee via GitGitGadget
2026-03-02 17:56       ` Jeff King
2026-03-02 18:31         ` Junio C Hamano
2026-03-02 18:36           ` Derrick Stolee
2026-03-02 15:36     ` Derrick Stolee via GitGitGadget [this message]
2026-03-02 18:03       ` [PATCH v3 2/4] run-command: extract clear_local_repo_env helper Jeff King
2026-03-02 18:35         ` Junio C Hamano
2026-03-02 18:37         ` Derrick Stolee
2026-03-02 15:36     ` [PATCH v3 3/4] for-each-repo: work correctly in a worktree Derrick Stolee via GitGitGadget
2026-03-02 18:06       ` Jeff King
2026-03-02 18:39         ` Derrick Stolee
2026-03-02 21:32           ` Junio C Hamano
2026-03-02 15:36     ` [PATCH v3 4/4] for-each-repo: simplify passing of parameters Derrick Stolee via GitGitGadget
2026-03-02 18:06       ` Jeff King
2026-03-03 17:31     ` [PATCH v4 0/4] for-each-repo: work correctly in a worktree Derrick Stolee via GitGitGadget
2026-03-03 17:31       ` [PATCH v4 1/4] for-each-repo: test outside of repo context Derrick Stolee via GitGitGadget
2026-03-03 17:31       ` [PATCH v4 2/4] run-command: extract sanitize_repo_env helper Derrick Stolee via GitGitGadget
2026-03-03 17:31       ` [PATCH v4 3/4] for-each-repo: work correctly in a worktree Derrick Stolee via GitGitGadget
2026-03-03 17:31       ` [PATCH v4 4/4] for-each-repo: simplify passing of parameters Derrick Stolee via GitGitGadget
2026-03-05  1:20       ` [PATCH v4 0/4] for-each-repo: work correctly in a worktree Jeff King
2026-03-05  6:14         ` Patrick Steinhardt
2026-03-05 17:23           ` Derrick Stolee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=13d783dbbdd77b14fed651f0508fa0e668d98c63.1772465805.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=fastcat@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=phillip.wood123@gmail.com \
    --cc=ps@pks.im \
    --cc=stolee@gmail.com \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox