Merge branch 'ds/blame-on-bloom'
"git blame" learns to take advantage of the "changed-paths" Bloom filter stored in the commit-graph file. * ds/blame-on-bloom: test-bloom: check that we have expected arguments test-bloom: fix some whitespace issues blame: drop unused parameter from maybe_changed_path blame: use changed-path Bloom filters tests: write commit-graph with Bloom filters revision: complicated pathspecs disable filters
This commit is contained in:
19
revision.c
19
revision.c
@ -650,6 +650,20 @@ static void trace2_bloom_filter_statistics_atexit(void)
|
||||
jw_release(&jw);
|
||||
}
|
||||
|
||||
static int forbid_bloom_filters(struct pathspec *spec)
|
||||
{
|
||||
if (spec->has_wildcard)
|
||||
return 1;
|
||||
if (spec->nr > 1)
|
||||
return 1;
|
||||
if (spec->magic & ~PATHSPEC_LITERAL)
|
||||
return 1;
|
||||
if (spec->nr && (spec->items[0].magic & ~PATHSPEC_LITERAL))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void prepare_to_use_bloom_filter(struct rev_info *revs)
|
||||
{
|
||||
struct pathspec_item *pi;
|
||||
@ -659,7 +673,10 @@ static void prepare_to_use_bloom_filter(struct rev_info *revs)
|
||||
int len;
|
||||
|
||||
if (!revs->commits)
|
||||
return;
|
||||
return;
|
||||
|
||||
if (forbid_bloom_filters(&revs->prune_data))
|
||||
return;
|
||||
|
||||
repo_parse_commit(revs->repo, revs->commits->item);
|
||||
|
||||
|
Reference in New Issue
Block a user