From: Tian Yuchen <cat@malon.dev>
To: git@vger.kernel.org
Cc: Tian Yuchen <cat@malon.dev>,
Christian Couder <christian.couder@gmail.com>,
Ayush Chandekar <ayu.chandekar@gmail.com>,
Olamide Caleb Bello <belkid98@gmail.com>
Subject: [PATCH v5 1/2] pack-objects: give fetch_if_missing call sites access to 'repo'
Date: Fri, 14 Aug 2026 15:24:18 +0800 [thread overview]
Message-ID: <20260814072419.1666358-2-cat@malon.dev> (raw)
In-Reply-To: <20260814072419.1666358-1-cat@malon.dev>
In order to move the global 'fetch_if_missing' variable into 'struct
repository' in a follow-up commit, first make sure every call site in
builtin/pack-objects.c has a 'struct repository *'.
'cmd_pack_objects()' already receives a 'repo' parameter. Drop the
UNUSED mark.
'option_parse_missing_action()' is registered as an OPT_CALLBACK, so
its signature is fixed and cannot easily gain a 'repo' parameter of
its own. Let it only record 'arg_missing_action'. Instead, apply the
side effect right after 'parse_options()' returns in
'cmd_pack_objects()', where 'repo' is available.
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Ayush Chandekar <ayu.chandekar@gmail.com>
Mentored-by: Olamide Caleb Bello <belkid98@gmail.com>
Signed-off-by: Tian Yuchen <cat@malon.dev>
---
builtin/pack-objects.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 1ec5b6f206..2b14dd2f31 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -4087,7 +4087,8 @@ static void stdin_packs_read_input(struct rev_info *revs,
static void add_unreachable_loose_objects(struct rev_info *revs);
-static void read_stdin_packs(enum stdin_packs_mode mode, int rev_list_unpacked)
+static void read_stdin_packs(struct repository *repo,
+ enum stdin_packs_mode mode, int rev_list_unpacked)
{
int prev_fetch_if_missing = fetch_if_missing;
struct rev_info revs;
@@ -4099,7 +4100,7 @@ static void read_stdin_packs(enum stdin_packs_mode mode, int rev_list_unpacked)
*/
fetch_if_missing = 0;
- repo_init_revisions(the_repository, &revs, NULL);
+ repo_init_revisions(repo, &revs, NULL);
/*
* Use a revision walk to fill in the namehash of objects in the include
* packs. To save time, we'll avoid traversing through objects that are
@@ -4469,14 +4470,12 @@ static int option_parse_missing_action(const struct option *opt UNUSED,
if (!strcmp(arg, "allow-any")) {
arg_missing_action = MA_ALLOW_ANY;
- fetch_if_missing = 0;
fn_show_object = show_object__ma_allow_any;
return 0;
}
if (!strcmp(arg, "allow-promisor")) {
arg_missing_action = MA_ALLOW_PROMISOR;
- fetch_if_missing = 0;
fn_show_object = show_object__ma_allow_promisor;
return 0;
}
@@ -5118,7 +5117,7 @@ static int parse_stdin_packs_mode(const struct option *opt, const char *arg,
int cmd_pack_objects(int argc,
const char **argv,
const char *prefix,
- struct repository *repo UNUSED)
+ struct repository *repo)
{
int use_internal_rev_list = 0;
int all_progress_implied = 0;
@@ -5267,6 +5266,10 @@ int cmd_pack_objects(int argc,
argc = parse_options(argc, argv, prefix, pack_objects_options,
pack_usage, 0);
+ if (arg_missing_action == MA_ALLOW_ANY ||
+ arg_missing_action == MA_ALLOW_PROMISOR)
+ fetch_if_missing = 0;
+
if (argc) {
base_name = argv[0];
argc--;
@@ -5471,7 +5474,7 @@ int cmd_pack_objects(int argc,
progress_state = start_progress(the_repository,
_("Enumerating objects"), 0);
if (stdin_packs) {
- read_stdin_packs(stdin_packs, rev_list_unpacked);
+ read_stdin_packs(repo, stdin_packs, rev_list_unpacked);
} else if (cruft) {
read_cruft_objects();
} else if (!use_internal_rev_list) {
--
2.43.0
next prev parent reply other threads:[~2026-08-14 7:24 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-15 1:18 [PATCH v1] repository: move fetch_if_missing into struct repository Tian Yuchen
2026-07-15 3:27 ` Junio C Hamano
2026-07-15 4:58 ` Tian Yuchen
2026-07-15 6:35 ` Patrick Steinhardt
2026-07-16 7:06 ` Tian Yuchen
2026-07-16 15:28 ` Junio C Hamano
2026-07-16 7:29 ` [PATCH v2] " Tian Yuchen
2026-08-01 15:53 ` Tian Yuchen
2026-08-04 8:24 ` Patrick Steinhardt
2026-08-04 17:38 ` Junio C Hamano
2026-08-05 12:34 ` Tian Yuchen
2026-08-05 12:10 ` Tian Yuchen
2026-08-07 9:41 ` [PATCH v3] " Tian Yuchen
2026-08-07 17:03 ` Junio C Hamano
2026-08-09 15:00 ` Tian Yuchen
2026-08-13 6:11 ` [PATCH v4] " Tian Yuchen
2026-08-13 16:32 ` Junio C Hamano
2026-08-14 7:24 ` [PATCH v5 0/2] " Tian Yuchen
2026-08-14 7:24 ` Tian Yuchen [this message]
2026-08-14 14:38 ` [PATCH v5 1/2] pack-objects: give fetch_if_missing call sites access to 'repo' Junio C Hamano
2026-08-14 7:24 ` [PATCH v5 2/2] repository: move fetch_if_missing into struct repository Tian Yuchen
2026-08-14 14:44 ` [PATCH v5 0/2] " Junio C Hamano
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=20260814072419.1666358-2-cat@malon.dev \
--to=cat@malon.dev \
--cc=ayu.chandekar@gmail.com \
--cc=belkid98@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.