aboutsummaryrefslogtreecommitdiffstats
path: root/pack-objects.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2025-10-09 10:01:39 +0200
committerJunio C Hamano <gitster@pobox.com>2025-10-16 14:42:39 -0700
commit86d8c62f48a1b193299de19c4dbc664650a853f1 (patch)
tree298065976ca8ffaf25137cabedf391d5b0a835d0 /pack-objects.c
parentpackfile: drop `packfile_store_get_packs()` (diff)
downloadgit-86d8c62f48a1b193299de19c4dbc664650a853f1.tar.gz
git-86d8c62f48a1b193299de19c4dbc664650a853f1.zip
packfile: introduce macro to iterate through packs
We have a bunch of different sites that want to iterate through all packs of a given `struct packfile_store`. This pattern is somewhat verbose and repetitive, which makes it somewhat cumbersome. Introduce a new macro `repo_for_each_pack()` that removes some of the boilerplate. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack-objects.c')
-rw-r--r--pack-objects.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/pack-objects.c b/pack-objects.c
index d8eb679735..d6adf0759c 100644
--- a/pack-objects.c
+++ b/pack-objects.c
@@ -86,7 +86,6 @@ struct object_entry *packlist_find(struct packing_data *pdata,
static void prepare_in_pack_by_idx(struct packing_data *pdata)
{
- struct packfile_store *packs = pdata->repo->objects->packfiles;
struct packed_git **mapping, *p;
int cnt = 0, nr = 1U << OE_IN_PACK_BITS;
@@ -96,13 +95,13 @@ static void prepare_in_pack_by_idx(struct packing_data *pdata)
* (i.e. in_pack_idx also zero) should return NULL.
*/
mapping[cnt++] = NULL;
- for (p = packfile_store_get_all_packs(packs); p; p = p->next, cnt++) {
+ repo_for_each_pack(pdata->repo, p) {
if (cnt == nr) {
free(mapping);
return;
}
p->index = cnt;
- mapping[cnt] = p;
+ mapping[cnt++] = p;
}
pdata->in_pack_by_idx = mapping;
}