mirror of
https://github.com/git/git.git
synced 2024-05-23 09:06:35 +02:00
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;
|
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,
|
static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
|
||||||
struct rev_info *revs,
|
struct rev_info *revs,
|
||||||
struct object_list *roots,
|
struct object_list *roots,
|
||||||
|
@ -544,21 +561,10 @@ static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
|
||||||
struct object *object = roots->item;
|
struct object *object = roots->item;
|
||||||
roots = roots->next;
|
roots = roots->next;
|
||||||
|
|
||||||
if (object->type == OBJ_COMMIT) {
|
if (object->type == OBJ_COMMIT &&
|
||||||
khiter_t pos = kh_get_oid_map(bitmap_git->bitmaps, object->oid);
|
add_commit_to_bitmap(bitmap_git, &base, (struct commit *)object)) {
|
||||||
|
object->flags |= SEEN;
|
||||||
if (pos < kh_end(bitmap_git->bitmaps)) {
|
continue;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object_list_insert(object, ¬_mapped);
|
object_list_insert(object, ¬_mapped);
|
||||||
|
|
Loading…
Reference in New Issue