public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: "Burak Kaan Karaçay" <bkkaracay@gmail.com>
To: git@vger.kernel.org
Cc: christian.couder@gmail.com, karthik.188@gmail.com,
	jltobler@gmail.com, ayu.chandekar@gmail.com,
	siddharthasthana31@gmail.com, l.s.r@web.de, ps@pks.im,
	"Burak Kaan Karaçay" <bkkaracay@gmail.com>
Subject: [PATCH 1/4] run-command: add repo_start_command()
Date: Wed, 11 Mar 2026 18:19:20 +0300	[thread overview]
Message-ID: <20260311151923.4178655-2-bkkaracay@gmail.com> (raw)
In-Reply-To: <20260311151923.4178655-1-bkkaracay@gmail.com>

Currently start_command() relies on implicitly the_repository to close
object store before the spawning a child process. This prevents callers
from safely starting commands in context of a different repository.

Introduce repo_start_command() which takes 'struct repository *' as
argument. To avoid breaking existing callers, redefine start_command()
as a wrapper to pass the_repository to repo_start_command().

Signed-off-by: Burak Kaan Karaçay <bkkaracay@gmail.com>
---
 run-command.c | 7 ++++++-
 run-command.h | 4 +++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/run-command.c b/run-command.c
index b27064ef57..fadc3d5283 100644
--- a/run-command.c
+++ b/run-command.c
@@ -675,6 +675,11 @@ static void trace_run_command(const struct child_process *cp)
 }
 
 int start_command(struct child_process *cmd)
+{
+	return repo_start_command(the_repository, cmd);
+}
+
+int repo_start_command(struct repository *repo, struct child_process *cmd)
 {
 	int need_in, need_out, need_err;
 	int fdin[2], fdout[2], fderr[2];
@@ -743,7 +748,7 @@ int start_command(struct child_process *cmd)
 	fflush(NULL);
 
 	if (cmd->close_object_store)
-		odb_close(the_repository->objects);
+		odb_close(repo->objects);
 
 #ifndef GIT_WINDOWS_NATIVE
 {
diff --git a/run-command.h b/run-command.h
index e1ca965b5b..654ca659b3 100644
--- a/run-command.h
+++ b/run-command.h
@@ -2,7 +2,6 @@
 #define RUN_COMMAND_H
 
 #include "thread-utils.h"
-
 #include "strvec.h"
 
 /**
@@ -15,6 +14,7 @@
  * produces in the caller in order to process it.
  */
 
+struct repository;
 
 /**
  * This describes the arguments, redirections, and environment of a
@@ -205,7 +205,9 @@ char *git_shell_path(void);
  * that specifies the details and returns pipe FDs (if requested).
  * See below for details.
  */
+
 int start_command(struct child_process *);
+int repo_start_command(struct repository *, struct child_process *);
 
 /**
  * Wait for the completion of a sub-process that was started with
-- 
2.53.0


  reply	other threads:[~2026-03-11 15:19 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-11 15:19 [PATCH 0/4] wean start_command() off the_repository Burak Kaan Karaçay
2026-03-11 15:19 ` Burak Kaan Karaçay [this message]
2026-03-11 15:19 ` [PATCH 2/4] run-command: use repo_start_command() in strict callers Burak Kaan Karaçay
2026-03-11 19:26   ` Junio C Hamano
2026-03-11 15:19 ` [PATCH 3/4] run-command: redefine start_command() as a wrapper macro Burak Kaan Karaçay
2026-03-11 15:19 ` [PATCH 4/4] cocci: convert start_command() to repo_start_command() Burak Kaan Karaçay
2026-03-11 18:18 ` [PATCH 0/4] wean start_command() off the_repository René Scharfe
2026-03-11 18:45   ` Jeff King
2026-03-11 19:09   ` Burak Kaan Karaçay
2026-03-11 19:35   ` Junio C Hamano
2026-03-11 19:30 ` Junio C Hamano
2026-03-12  8:53 ` [PATCH v2] run-command: " Burak Kaan Karaçay
2026-03-12 10:01   ` Patrick Steinhardt
2026-03-12 14:44 ` [PATCH v3 0/2] run-command: stop using the_repository Burak Kaan Karaçay
2026-03-12 14:44   ` [PATCH v3 1/2] run-command: wean start_command() off the_repository Burak Kaan Karaçay
2026-03-12 14:44   ` [PATCH v3 2/2] run-command: wean auto_maintenance() functions " Burak Kaan Karaçay
2026-03-12 15:29   ` [PATCH v3 0/2] run-command: stop using the_repository Junio C Hamano
2026-03-13  6:23     ` Patrick Steinhardt

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=20260311151923.4178655-2-bkkaracay@gmail.com \
    --to=bkkaracay@gmail.com \
    --cc=ayu.chandekar@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jltobler@gmail.com \
    --cc=karthik.188@gmail.com \
    --cc=l.s.r@web.de \
    --cc=ps@pks.im \
    --cc=siddharthasthana31@gmail.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