packfile: refactor `get_packed_git()` to work on packfile store

The `get_packed_git()` function prepares the packfile store and then returns its packfiles. Refactor it to accept a packfile store instead of a repository to clarify its scope. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Sep 23, 2025 at 12:17 UTC 751808b2a18acba76b824aed4d8b7442bd7f5fca
5 files changed +13 -8
builtin/gc.c
+1 -1
@@ -1423,7 +1423,7 @@ static int incremental_repack_auto_condition(struct gc_config *cfg UNUSED)
1423 if (incremental_repack_auto_limit < 0)
1424 return 1;
1425
1426 - for (p = get_packed_git(the_repository);
1426 + for (p = packfile_store_get_packs(the_repository->objects->packfiles);
1427 count < incremental_repack_auto_limit && p;
1428 p = p->next) {
1429 if (!p->multi_pack_index)
builtin/grep.c
+1 -1
@@ -1214,7 +1214,7 @@ int cmd_grep(int argc,
1214 if (recurse_submodules)
1215 repo_read_gitmodules(the_repository, 1);
1216 if (startup_info->have_repository)
1217 - (void)get_packed_git(the_repository);
1217 + (void)packfile_store_get_packs(the_repository->objects->packfiles);
1218
1219 start_threads(&opt);
1220 } else {
object-name.c
+2 -2
@@ -213,7 +213,7 @@ static void find_short_packed_object(struct disambiguate_state *ds)
213 unique_in_midx(m, ds);
214 }
215
216 - for (p = get_packed_git(ds->repo); p && !ds->ambiguous;
216 + for (p = packfile_store_get_packs(ds->repo->objects->packfiles); p && !ds->ambiguous;
217 p = p->next)
218 unique_in_pack(p, ds);
219 }
@@ -806,7 +806,7 @@ static void find_abbrev_len_packed(struct min_abbrev_data *mad)
806 find_abbrev_len_for_midx(m, mad);
807 }
808
809 - for (p = get_packed_git(mad->repo); p; p = p->next)
809 + for (p = packfile_store_get_packs(mad->repo->objects->packfiles); p; p = p->next)
810 find_abbrev_len_for_pack(p, mad);
811 }
812
packfile.c
+3 -3
@@ -1027,10 +1027,10 @@ void packfile_store_reprepare(struct packfile_store *store)
1027 packfile_store_prepare(store);
1028 }
1029
1030 -struct packed_git *get_packed_git(struct repository *r)
1030 +struct packed_git *packfile_store_get_packs(struct packfile_store *store)
1031 {
1032 - packfile_store_prepare(r->objects->packfiles);
1033 - return r->objects->packfiles->packs;
1032 + packfile_store_prepare(store);
1033 + return store->packs;
1034 }
1035
1036 struct packed_git *get_all_packs(struct repository *r)
packfile.h
+6 -1
@@ -136,6 +136,12 @@ void packfile_store_reprepare(struct packfile_store *store);
136 void packfile_store_add_pack(struct packfile_store *store,
137 struct packed_git *pack);
138
139 +/*
140 + * Get packs managed by the given store. Does not load the MIDX or any packs
141 + * referenced by it.
142 + */
143 +struct packed_git *packfile_store_get_packs(struct packfile_store *store);
144 +
145 /*
146 * Open the packfile and add it to the store if it isn't yet known. Returns
147 * either the newly opened packfile or the preexisting packfile. Returns a
@@ -220,7 +226,6 @@ int for_each_packed_object(struct repository *repo, each_packed_object_fn cb,
226 #define PACKDIR_FILE_GARBAGE 4
227 extern void (*report_garbage)(unsigned seen_bits, const char *path);
228
223 -struct packed_git *get_packed_git(struct repository *r);
229 struct list_head *get_packed_git_mru(struct repository *r);
230 struct packed_git *get_all_packs(struct repository *r);
231