[PATCH v3 12/25] pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Jul 27, 2021, 21:19 UTC
- Message-ID
- <743a1a138ef236e876f2c18257e5f4213c3acbc9.1627420428.git.me@ttaylorr.com>
- In-Reply-To
- <cover.1627420428.git.me@ttaylorr.com>
In a recent commit, pack-objects learned support for the 'pack.preferBitmapTips' configuration. This patch prepares the multi-pack bitmap code to respect this configuration, too.
The yet-to-be implemented code will find that it is more efficient to check whether each reference contains a prefix found in the configured set of values rather than doing an additional traversal.
Implement a function 'bitmap_is_preferred_refname()' which will perform that check. Its caller will be added in a subsequent patch.
Signed-off-by: Taylor Blau <me@ttaylorr.com> --- pack-bitmap.c | 16 ++++++++++++++++ pack-bitmap.h | 1 + 2 files changed, 17 insertions(+)
diff --git a/pack-bitmap.c b/pack-bitmap.c index 9d0dd1cde7..6b12c96e32 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -1652,3 +1652,19 @@ const struct string_list *bitmap_preferred_tips(struct repository *r) { return repo_config_get_value_multi(r, "pack.preferbitmaptips"); } + +int bitmap_is_preferred_refname(struct repository *r, const char *refname) +{ + const struct string_list *preferred_tips = bitmap_preferred_tips(r); + struct string_list_item *item; + + if (!preferred_tips) + return 0; + + for_each_string_list_item(item, preferred_tips) { + if (starts_with(refname, item->string)) + return 1; + } + + return 0; +} diff --git a/pack-bitmap.h b/pack-bitmap.h index 020cd8d868..52ea10de51 100644 --- a/pack-bitmap.h +++ b/pack-bitmap.h @@ -94,5 +94,6 @@ void bitmap_writer_finish(struct pack_idx_entry **index, uint16_t options); const struct string_list *bitmap_preferred_tips(struct repository *r); +int bitmap_is_preferred_refname(struct repository *r, const char *refname); #endif
-- 2.31.1.163.ga65ce7f831