pack-bitmap: implement combined filter
When the user has multiple objects filters specified, then this is internally represented by having a "combined" filter. These combined filters aren't yet supported by bitmap indices and can thus not be accelerated. Fix this by implementing support for these combined filters. The implementation is quite trivial: when there's a combined filter, we simply recurse into `filter_bitmap()` for all of the sub-filters. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
7ab6aafa58
commit
169a15ebd6
@ -966,6 +966,16 @@ static int filter_bitmap(struct bitmap_index *bitmap_git,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (filter->choice == LOFC_COMBINE) {
|
||||
int i;
|
||||
for (i = 0; i < filter->sub_nr; i++) {
|
||||
if (filter_bitmap(bitmap_git, tip_objects, to_filter,
|
||||
&filter->sub[i]) < 0)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* filter choice not handled */
|
||||
return -1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user