return 0;
}
-static void mark_bitmap_preferred_tips(void)
-{
- struct string_list_item *item;
- const struct string_list *preferred_tips;
-
- preferred_tips = bitmap_preferred_tips(the_repository);
- if (!preferred_tips)
- return;
-
- for_each_string_list_item(item, preferred_tips) {
- refs_for_each_ref_in(get_main_ref_store(the_repository),
- item->string, mark_bitmap_preferred_tip,
- NULL);
- }
-}
-
static inline int is_oid_uninteresting(struct repository *repo,
struct object_id *oid)
{
load_delta_islands(the_repository, progress);
if (write_bitmap_index)
- mark_bitmap_preferred_tips();
+ for_each_preferred_bitmap_tip(the_repository, mark_bitmap_preferred_tip,
+ NULL);
if (!fn_show_object)
fn_show_object = show_object;
return !!bitmap_git->midx;
}
-const struct string_list *bitmap_preferred_tips(struct repository *r)
+static const struct string_list *bitmap_preferred_tips(struct repository *r)
{
const struct string_list *dest;
return NULL;
}
+void for_each_preferred_bitmap_tip(struct repository *repo,
+ each_ref_fn cb, void *cb_data)
+{
+ struct string_list_item *item;
+ const struct string_list *preferred_tips;
+
+ preferred_tips = bitmap_preferred_tips(repo);
+ if (!preferred_tips)
+ return;
+
+ for_each_string_list_item(item, preferred_tips) {
+ refs_for_each_ref_in(get_main_ref_store(repo),
+ item->string, cb, cb_data);
+ }
+}
+
int bitmap_is_preferred_refname(struct repository *r, const char *refname)
{
const struct string_list *preferred_tips = bitmap_preferred_tips(r);
#include "khash.h"
#include "pack.h"
#include "pack-objects.h"
+#include "refs.h"
#include "string-list.h"
struct commit;
show_reachable_fn show_reach,
void *payload);
+/*
+ * Iterate over all references that are configured as preferred bitmap tips via
+ * "pack.preferBitmapTips" and invoke the callback on each function.
+ */
+void for_each_preferred_bitmap_tip(struct repository *repo,
+ each_ref_fn cb, void *cb_data);
+
#define GIT_TEST_PACK_USE_BITMAP_BOUNDARY_TRAVERSAL \
"GIT_TEST_PACK_USE_BITMAP_BOUNDARY_TRAVERSAL"
int bitmap_is_midx(struct bitmap_index *bitmap_git);
-const struct string_list *bitmap_preferred_tips(struct repository *r);
int bitmap_is_preferred_refname(struct repository *r, const char *refname);
int verify_bitmap_files(struct repository *r);
void midx_snapshot_refs(struct repository *repo, struct tempfile *f)
{
struct midx_snapshot_ref_data data;
- const struct string_list *preferred = bitmap_preferred_tips(repo);
data.repo = repo;
data.f = f;
die(_("could not open tempfile %s for writing"),
get_tempfile_path(f));
- if (preferred) {
- struct string_list_item *item;
-
- data.preferred = 1;
- for_each_string_list_item(item, preferred)
- refs_for_each_ref_in(get_main_ref_store(repo),
- item->string,
- midx_snapshot_ref_one, &data);
- data.preferred = 0;
- }
+ data.preferred = 1;
+ for_each_preferred_bitmap_tip(repo, midx_snapshot_ref_one, &data);
+ data.preferred = 0;
refs_for_each_ref(get_main_ref_store(repo),
midx_snapshot_ref_one, &data);