Subject: [PATCH 0/4] wean start_command() off the_repository

From: Burak Kaan Karaçay <[email-masked]>
Date: Wed, 11 Mar 2026 18:19:19 +0300

Hi,

start_command() relies on the_repository due to the 'close_object_store'
flag in 'struct child_process'. Introduce repo_start_command() to allow
working with arbitrary repositories. Turn start_command() into a macro
that wraps repo_start_command() and migrate the existing callers with a
cocci script.

For callers that cannot access 'the_repository' due to the lack of
USE_THE_REPOSITORY_VARIABLE, define the macro. If the caller already has
a local repository context, pass it explicitly instead of defining the
macro.

Thanks,
Burak Kaan Karaçay

Burak Kaan Karaçay (4):
  run-command: add repo_start_command()
  run-command: use repo_start_command() in strict callers
  run-command: redefine start_command() as a wrapper macro
  cocci: convert start_command() to repo_start_command()

 archive-tar.c                           |  2 +-
 branch.c                                |  2 +-
 builtin/credential-cache.c              |  4 +++-
 builtin/difftool.c                      |  4 ++--
 builtin/gc.c                            | 16 ++++++++--------
 builtin/help.c                          |  2 +-
 builtin/index-pack.c                    |  2 +-
 builtin/merge.c                         |  2 +-
 builtin/notes.c                         |  2 +-
 builtin/receive-pack.c                  |  6 +++---
 builtin/remote-ext.c                    |  4 +++-
 builtin/repack.c                        |  2 +-
 builtin/replace.c                       |  2 +-
 builtin/upload-archive.c                |  2 +-
 builtin/worktree.c                      |  2 +-
 bundle-uri.c                            |  2 +-
 bundle.c                                |  2 +-
 column.c                                |  3 ++-
 compat/mingw.c                          |  2 +-
 connect.c                               |  4 ++--
 connected.c                             |  2 +-
 contrib/coccinelle/the_repository.cocci |  3 +++
 convert.c                               |  2 +-
 credential.c                            |  3 ++-
 daemon.c                                |  6 +++---
 diff.c                                  |  2 +-
 editor.c                                |  2 +-
 fetch-pack.c                            |  4 ++--
 http-backend.c                          |  2 +-
 imap-send.c                             |  2 +-
 midx-write.c                            |  4 +++-
 odb.c                                   |  2 +-
 pager.c                                 |  2 +-
 parallel-checkout.c                     |  2 +-
 promisor-remote.c                       |  2 +-
 prompt.c                                |  3 ++-
 range-diff.c                            |  2 +-
 reachable.c                             |  2 +-
 remote-curl.c                           |  2 +-
 repack-cruft.c                          |  4 +++-
 repack-filtered.c                       |  4 +++-
 repack-midx.c                           |  4 +++-
 repack-promisor.c                       |  6 ++++--
 run-command.c                           | 12 ++++++------
 run-command.h                           |  6 ++++--
 send-pack.c                             |  4 ++--
 sub-process.c                           |  5 ++++-
 submodule.c                             | 12 ++++++------
 t/helper/test-run-command.c             |  6 ++++--
 transport-helper.c                      |  6 +++---
 upload-pack.c                           |  4 ++--
 51 files changed, 108 insertions(+), 81 deletions(-)

-- 
2.53.0