]> git.ipfire.org Git - thirdparty/git.git/commit
pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`
authorTaylor Blau <me@ttaylorr.com>
Thu, 14 Dec 2023 22:24:04 +0000 (17:24 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Dec 2023 22:38:08 +0000 (14:38 -0800)
commit83296d20e84e248ea539fe1332fca2139cfcfb8b
tree04f585924bede4f98f9b783ee9729dfe62a2150d
parent35e156b9de1dcc43673c6050cdb65735a7457c1a
pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`

Further prepare for enabling verbatim pack-reuse over multiple packfiles
by changing the signature of reuse_partial_packfile_from_bitmap() to
populate an array of `struct bitmapped_pack *`'s instead of a pointer to
a single packfile.

Since the array we're filling out is sized dynamically[^1], add an
additional `size_t *` parameter which will hold the number of reusable
packs (equal to the number of elements in the array).

Note that since we still have not implemented true multi-pack reuse,
these changes aren't propagated out to the rest of the caller in
builtin/pack-objects.c.

In the interim state, we expect that the array has a single element, and
we use that element to fill out the static `reuse_packfile` variable
(which is a bog-standard `struct packed_git *`). Future commits will
continue to push this change further out through the pack-objects code.

[^1]: That is, even though we know the number of packs which are
  candidates for pack-reuse, we do not know how many of those
  candidates we can actually reuse.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/pack-objects.c
pack-bitmap.c
pack-bitmap.h