summaryrefslogtreecommitdiff
path: root/builtin/rev-list.c
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2020-02-14 13:22:32 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-02-14 10:46:22 -0800
commit2aaeb9ac414d75f875efa968480db1ce85dc8dc5 (patch)
tree022c2722df7069ed5090cf49252d3ef094931b86 /builtin/rev-list.c
parentpack-bitmap: basic noop bitmap filter infrastructure (diff)
downloadtgif-2aaeb9ac414d75f875efa968480db1ce85dc8dc5.tar.xz
rev-list: use bitmap filters for traversal
This just passes the filter-options struct to prepare_bitmap_walk(). Since the bitmap code doesn't actually support any filters yet, it will fallback to the non-bitmap code if any --filter is specified. But this lets us exercise that rejection code path, as well as getting us ready to test filters via rev-list when we _do_ support them. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/rev-list.c')
-rw-r--r--builtin/rev-list.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index 6ff5e175fa..35e14ad2ed 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -372,7 +372,8 @@ static inline int parse_missing_action_value(const char *value)
return 0;
}
-static int try_bitmap_count(struct rev_info *revs)
+static int try_bitmap_count(struct rev_info *revs,
+ struct list_objects_filter_options *filter)
{
uint32_t commit_count = 0,
tag_count = 0,
@@ -407,7 +408,7 @@ static int try_bitmap_count(struct rev_info *revs)
*/
max_count = revs->max_count;
- bitmap_git = prepare_bitmap_walk(revs, NULL);
+ bitmap_git = prepare_bitmap_walk(revs, filter);
if (!bitmap_git)
return -1;
@@ -423,7 +424,8 @@ static int try_bitmap_count(struct rev_info *revs)
return 0;
}
-static int try_bitmap_traversal(struct rev_info *revs)
+static int try_bitmap_traversal(struct rev_info *revs,
+ struct list_objects_filter_options *filter)
{
struct bitmap_index *bitmap_git;
@@ -434,7 +436,7 @@ static int try_bitmap_traversal(struct rev_info *revs)
if (revs->max_count >= 0)
return -1;
- bitmap_git = prepare_bitmap_walk(revs, NULL);
+ bitmap_git = prepare_bitmap_walk(revs, filter);
if (!bitmap_git)
return -1;
@@ -605,9 +607,6 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
(revs.left_right || revs.cherry_mark))
die(_("marked counting is incompatible with --objects"));
- if (filter_options.choice)
- use_bitmap_index = 0;
-
save_commit_buffer = (revs.verbose_header ||
revs.grep_filter.pattern_list ||
revs.grep_filter.header_list);
@@ -618,9 +617,9 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
progress = start_delayed_progress(show_progress, 0);
if (use_bitmap_index) {
- if (!try_bitmap_count(&revs))
+ if (!try_bitmap_count(&revs, &filter_options))
return 0;
- if (!try_bitmap_traversal(&revs))
+ if (!try_bitmap_traversal(&revs, &filter_options))
return 0;
}