aboutsummaryrefslogtreecommitdiff
path: root/packfile.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2025-10-30 11:38:40 +0100
committerJunio C Hamano <gitster@pobox.com>2025-10-30 07:09:52 -0700
commit89219bc0cd09ada8a204e0ace0bd15decaea7d31 (patch)
treec56034339260eb35f5859814598fa975a0e2b540 /packfile.c
parentf905a855b1d1e172ba1e51e03fc5ec531445575e (diff)
downloadgit-89219bc0cd09ada8a204e0ace0bd15decaea7d31.tar.xz
http: refactor subsystem to use `packfile_list`s
The dumb HTTP protocol directly fetches packfiles from the remote server and temporarily stores them in a list of packfiles. Those packfiles are not yet added to the repository's packfile store until we finalize the whole fetch. Refactor the code to instead use a `struct packfile_list` to store those packs. This prepares us for a subsequent change where the `->next` pointer of `struct packed_git` will go away. Note that this refactoring creates some temporary duplication of code, as we now have both `packfile_list_find_oid()` and `find_oid_pack()`. The latter function will be removed in a subsequent commit though. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'packfile.c')
-rw-r--r--packfile.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/packfile.c b/packfile.c
index 4d2d3b674f..6aa2ca8ac9 100644
--- a/packfile.c
+++ b/packfile.c
@@ -121,6 +121,15 @@ void packfile_list_append(struct packfile_list *list, struct packed_git *pack)
}
}
+struct packed_git *packfile_list_find_oid(struct packfile_list_entry *packs,
+ const struct object_id *oid)
+{
+ for (; packs; packs = packs->next)
+ if (find_pack_entry_one(oid, packs->pack))
+ return packs->pack;
+ return NULL;
+}
+
void pack_report(struct repository *repo)
{
fprintf(stderr,