diff options
| author | Patrick Steinhardt <ps@pks.im> | 2025-04-02 13:13:44 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-04-07 14:43:51 -0700 |
| commit | c9b94a7785b4de4e3e15d0e5b65c97337c206b81 (patch) | |
| tree | 9106c8a9c0e30164a4a6ef21ea8a31f5e4bf3e66 | |
| parent | 5420901bde8043a298b8ae5e5b3c3cfc1b67039b (diff) | |
| download | git-c9b94a7785b4de4e3e15d0e5b65c97337c206b81.tar.gz | |
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>
| -rw-r--r-- | pack-bitmap.c | 15 | ||||
| -rw-r--r-- | pack-bitmap.h | 7 |
2 files changed, 22 insertions, 0 deletions
diff --git a/pack-bitmap.c b/pack-bitmap.c index 6adb8aaa1c..edc8f42122 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -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; diff --git a/pack-bitmap.h b/pack-bitmap.h index 079bae3246..55df1b3af5 100644 --- a/pack-bitmap.h +++ b/pack-bitmap.h @@ -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 *, |
