From: Taylor Blau Date: Fri, 26 Jun 2026 19:02:33 +0000 (-0400) Subject: pack-objects: extract `stdin_packs_add_all_pack_entries()` X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=806cd59ba235c0b19261019c039a22392cc6fc04;p=thirdparty%2Fgit.git pack-objects: extract `stdin_packs_add_all_pack_entries()` Extract the pack enumeration loop from stdin_packs_add_pack_entries() into a separate stdin_packs_add_all_pack_entries() helper, and have the caller dispatch to it based on the stdin_packs_mode. This prepares for a subsequent commit which will introduce an alternate code path for '--stdin-packs=follow-reachable' that determines the set of objects to include via a reachability walk rather than eagerly adding all objects from included packs. Signed-off-by: Taylor Blau Signed-off-by: Junio C Hamano --- diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 27048bbb4d..29e43abb51 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -3933,30 +3933,12 @@ static int stdin_packs_include_check(struct commit *commit, void *data) return stdin_packs_include_check_obj((struct object *)commit, data); } -static void stdin_packs_add_pack_entries(struct strmap *packs, - struct rev_info *revs) +static void stdin_packs_add_all_pack_entries(struct string_list *keys, + struct rev_info *revs) { - struct string_list keys = STRING_LIST_INIT_NODUP; struct string_list_item *item; - struct hashmap_iter iter; - struct strmap_entry *entry; - - strmap_for_each_entry(packs, &iter, entry) { - struct stdin_pack_info *info = entry->value; - if (!info->p) - die(_("could not find pack '%s'"), entry->key); - - string_list_append(&keys, entry->key)->util = info; - } - /* - * Order packs by ascending mtime; use QSORT directly to access the - * string_list_item's ->util pointer, which string_list_sort() does not - * provide. - */ - QSORT(keys.items, keys.nr, pack_mtime_cmp); - - for_each_string_list_item(item, &keys) { + for_each_string_list_item(item, keys) { struct stdin_pack_info *info = item->util; if (info->kind & STDIN_PACK_EXCLUDE_OPEN) { @@ -3977,6 +3959,31 @@ static void stdin_packs_add_pack_entries(struct strmap *packs, revs, ODB_FOR_EACH_OBJECT_PACK_ORDER); } +} + +static void stdin_packs_add_pack_entries(struct strmap *packs, + struct rev_info *revs) +{ + struct string_list keys = STRING_LIST_INIT_NODUP; + struct hashmap_iter iter; + struct strmap_entry *entry; + + strmap_for_each_entry(packs, &iter, entry) { + struct stdin_pack_info *info = entry->value; + if (!info->p) + die(_("could not find pack '%s'"), entry->key); + + string_list_append(&keys, entry->key)->util = info; + } + + /* + * Order packs by ascending mtime; use QSORT directly to access the + * string_list_item's ->util pointer, which string_list_sort() does not + * provide. + */ + QSORT(keys.items, keys.nr, pack_mtime_cmp); + + stdin_packs_add_all_pack_entries(&keys, revs); string_list_clear(&keys, 0); }