Browse Source

pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Taylor Blau 3 years ago committed by Junio C Hamano
parent
commit
711260fd60
  1. 16
      pack-bitmap.c
  2. 1
      pack-bitmap.h

16
pack-bitmap.c

@ -1658,3 +1658,19 @@ const struct string_list *bitmap_preferred_tips(struct repository *r) @@ -1658,3 +1658,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;
}

1
pack-bitmap.h

@ -94,5 +94,6 @@ void bitmap_writer_finish(struct pack_idx_entry **index, @@ -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

Loading…
Cancel
Save