packfile: refactor `get_packed_git_mru()` to work on packfile store
The `get_packed_git_mru()` function prepares the packfile store and then returns its packfiles in most-recently-used order. 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
dd52a29b78d80e425be660f3b443a42e0374a7d1
3 files changed
+10
-7
builtin/pack-objects.c
+2
-2
@@ -1748,12 +1748,12 @@ static int want_object_in_pack_mtime(const struct object_id *oid,
1748
}
1749
}
1750
1751
- list_for_each(pos, get_packed_git_mru(the_repository)) {
1751
+ list_for_each(pos, packfile_store_get_packs_mru(the_repository->objects->packfiles)) {
1752
struct packed_git *p = list_entry(pos, struct packed_git, mru);
1753
want = want_object_in_pack_one(p, oid, exclude, found_pack, found_offset, found_mtime);
1754
if (!exclude && want > 0)
1755
list_move(&p->mru,
1756
- get_packed_git_mru(the_repository));
1756
+ packfile_store_get_packs_mru(the_repository->objects->packfiles));
1757
if (want != -1)
1758
return want;
1759
}
packfile.c
+3
-3
@@ -1048,10 +1048,10 @@ struct packed_git *packfile_store_get_all_packs(struct packfile_store *store)
1048
return store->packs;
1049
}
1050
1051
-struct list_head *get_packed_git_mru(struct repository *r)
1051
+struct list_head *packfile_store_get_packs_mru(struct packfile_store *store)
1052
{
1053
- packfile_store_prepare(r->objects->packfiles);
1054
- return &r->objects->packfiles->mru;
1053
+ packfile_store_prepare(store);
1054
+ return &store->mru;
1055
}
1056
1057
/*
packfile.h
+5
-2
@@ -148,6 +148,11 @@ struct packed_git *packfile_store_get_packs(struct packfile_store *store);
148
*/
149
struct packed_git *packfile_store_get_all_packs(struct packfile_store *store);
150
151
+/*
152
+ * Get all packs in most-recently-used order.
153
+ */
154
+struct list_head *packfile_store_get_packs_mru(struct packfile_store *store);
155
+
156
/*
157
* Open the packfile and add it to the store if it isn't yet known. Returns
158
* either the newly opened packfile or the preexisting packfile. Returns a
@@ -232,8 +237,6 @@ int for_each_packed_object(struct repository *repo, each_packed_object_fn cb,
237
#define PACKDIR_FILE_GARBAGE 4
238
extern void (*report_garbage)(unsigned seen_bits, const char *path);
239
235
-struct list_head *get_packed_git_mru(struct repository *r);
236
-
240
/*
241
* Give a rough count of objects in the repository. This sacrifices accuracy
242
* for speed.