pack-bitmap: introduce function to check whether a pack is bitmapped
Introduce a function that allows us to verify whether a pack is bitmapped or not. This functionality will be used in a subsequent commit. Helped-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
5420901bde
commit
c9b94a7785
|
@ -745,6 +745,21 @@ struct bitmap_index *prepare_midx_bitmap_git(struct multi_pack_index *midx)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
int bitmap_index_contains_pack(struct bitmap_index *bitmap, struct packed_git *pack)
|
||||
{
|
||||
for (; bitmap; bitmap = bitmap->base) {
|
||||
if (bitmap_is_midx(bitmap)) {
|
||||
for (size_t i = 0; i < bitmap->midx->num_packs; i++)
|
||||
if (bitmap->midx->packs[i] == pack)
|
||||
return 1;
|
||||
} else if (bitmap->pack == pack) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct include_data {
|
||||
struct bitmap_index *bitmap_git;
|
||||
struct bitmap *base;
|
||||
|
|
|
@ -67,6 +67,13 @@ struct bitmapped_pack {
|
|||
|
||||
struct bitmap_index *prepare_bitmap_git(struct repository *r);
|
||||
struct bitmap_index *prepare_midx_bitmap_git(struct multi_pack_index *midx);
|
||||
|
||||
/*
|
||||
* Given a bitmap index, determine whether it contains the pack either directly
|
||||
* or via the multi-pack-index.
|
||||
*/
|
||||
int bitmap_index_contains_pack(struct bitmap_index *bitmap, struct packed_git *pack);
|
||||
|
||||
void count_bitmap_commit_list(struct bitmap_index *, uint32_t *commits,
|
||||
uint32_t *trees, uint32_t *blobs, uint32_t *tags);
|
||||
void traverse_bitmap_commit_list(struct bitmap_index *,
|
||||
|
|
Loading…
Reference in New Issue