KHASH_INIT(str, const char *, void *, 1, kh_str_hash_func, kh_str_hash_equal)
-static khash_sha1 *island_marks;
+static kh_oid_map_t *island_marks;
static unsigned island_counter;
static unsigned island_counter_core;
* If we don't have a bitmap for the target, we can delta it
* against anything -- it's not an important object
*/
- trg_pos = kh_get_sha1(island_marks, trg_oid->hash);
+ trg_pos = kh_get_oid_map(island_marks, *trg_oid);
if (trg_pos >= kh_end(island_marks))
return 1;
* if the source (our delta base) doesn't have a bitmap,
* we don't want to base any deltas on it!
*/
- src_pos = kh_get_sha1(island_marks, src_oid->hash);
+ src_pos = kh_get_oid_map(island_marks, *src_oid);
if (src_pos >= kh_end(island_marks))
return 0;
if (!island_marks)
return 0;
- a_pos = kh_get_sha1(island_marks, a->hash);
+ a_pos = kh_get_oid_map(island_marks, *a);
if (a_pos < kh_end(island_marks))
a_bitmap = kh_value(island_marks, a_pos);
- b_pos = kh_get_sha1(island_marks, b->hash);
+ b_pos = kh_get_oid_map(island_marks, *b);
if (b_pos < kh_end(island_marks))
b_bitmap = kh_value(island_marks, b_pos);
khiter_t pos;
int hash_ret;
- pos = kh_put_sha1(island_marks, obj->oid.hash, &hash_ret);
+ pos = kh_put_oid_map(island_marks, obj->oid, &hash_ret);
if (hash_ret)
kh_value(island_marks, pos) = island_bitmap_new(NULL);
khiter_t pos;
int hash_ret;
- pos = kh_put_sha1(island_marks, obj->oid.hash, &hash_ret);
+ pos = kh_put_oid_map(island_marks, obj->oid, &hash_ret);
if (hash_ret) {
/*
* We don't have one yet; make a copy-on-write of the
struct name_entry entry;
khiter_t pos;
- pos = kh_get_sha1(island_marks, ent->idx.oid.hash);
+ pos = kh_get_oid_map(island_marks, ent->idx.oid);
if (pos >= kh_end(island_marks))
continue;
if (S_ISGITLINK(entry.mode))
continue;
- obj = lookup_object(r, entry.oid.hash);
+ obj = lookup_object(r, &entry.oid);
if (!obj)
continue;
free(list);
}
-void load_delta_islands(struct repository *r)
+void load_delta_islands(struct repository *r, int progress)
{
- island_marks = kh_init_sha1();
+ island_marks = kh_init_oid_map();
remote_islands = kh_init_str();
git_config(island_config_callback, NULL);
for_each_ref(find_island_for_ref, NULL);
deduplicate_islands(r);
- fprintf(stderr, _("Marked %d islands, done.\n"), island_counter);
+ if (progress)
+ fprintf(stderr, _("Marked %d islands, done.\n"), island_counter);
}
void propagate_island_marks(struct commit *commit)
{
- khiter_t pos = kh_get_sha1(island_marks, commit->object.oid.hash);
+ khiter_t pos = kh_get_oid_map(island_marks, commit->object.oid);
if (pos < kh_end(island_marks)) {
struct commit_list *p;
for (i = 0; i < to_pack->nr_objects; ++i) {
struct object_entry *entry = &to_pack->objects[i];
- khiter_t pos = kh_get_sha1(island_marks, entry->idx.oid.hash);
+ khiter_t pos = kh_get_oid_map(island_marks, entry->idx.oid);
oe_set_layer(to_pack, entry, 1);