pack-bitmap: factor out 'add_commit_to_bitmap()'
'find_objects()' currently needs to interact with the bitmaps khash pretty closely. To make 'find_objects()' read a little more straightforwardly, remove some of the khash-level details into a new function that describes what it does: 'add_commit_to_bitmap()'. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
98c31f366a
commit
83578051a9
@ -521,6 +521,23 @@ static int should_include(struct commit *commit, void *_data)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int add_commit_to_bitmap(struct bitmap_index *bitmap_git,
|
||||
struct bitmap **base,
|
||||
struct commit *commit)
|
||||
{
|
||||
struct ewah_bitmap *or_with = bitmap_for_commit(bitmap_git, commit);
|
||||
|
||||
if (!or_with)
|
||||
return 0;
|
||||
|
||||
if (*base == NULL)
|
||||
*base = ewah_to_bitmap(or_with);
|
||||
else
|
||||
bitmap_or_ewah(*base, or_with);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
|
||||
struct rev_info *revs,
|
||||
struct object_list *roots,
|
||||
@ -544,21 +561,10 @@ static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
|
||||
struct object *object = roots->item;
|
||||
roots = roots->next;
|
||||
|
||||
if (object->type == OBJ_COMMIT) {
|
||||
khiter_t pos = kh_get_oid_map(bitmap_git->bitmaps, object->oid);
|
||||
|
||||
if (pos < kh_end(bitmap_git->bitmaps)) {
|
||||
struct stored_bitmap *st = kh_value(bitmap_git->bitmaps, pos);
|
||||
struct ewah_bitmap *or_with = lookup_stored_bitmap(st);
|
||||
|
||||
if (base == NULL)
|
||||
base = ewah_to_bitmap(or_with);
|
||||
else
|
||||
bitmap_or_ewah(base, or_with);
|
||||
|
||||
object->flags |= SEEN;
|
||||
continue;
|
||||
}
|
||||
if (object->type == OBJ_COMMIT &&
|
||||
add_commit_to_bitmap(bitmap_git, &base, (struct commit *)object)) {
|
||||
object->flags |= SEEN;
|
||||
continue;
|
||||
}
|
||||
|
||||
object_list_insert(object, ¬_mapped);
|
||||
|
Loading…
Reference in New Issue
Block a user