Merge branch 'gs/commit-graph-path-filter'
Introduce an extension to the commit-graph to make it efficient to check for the paths that were modified at each commit using Bloom filters. * gs/commit-graph-path-filter: bloom: ignore renames when computing changed paths commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag t4216: add end to end tests for git log with Bloom filters revision.c: add trace2 stats around Bloom filter usage revision.c: use Bloom filters to speed up path based revision walks commit-graph: add --changed-paths option to write subcommand commit-graph: reuse existing Bloom filters during write commit-graph: write Bloom filters to commit graph file commit-graph: examine commits by generation number commit-graph: examine changed-path objects in pack order commit-graph: compute Bloom filters for changed paths diff: halt tree-diff early after max_changes bloom.c: core Bloom filter implementation for changed paths. bloom.c: introduce core Bloom filter constructs bloom.c: add the murmur3 hash implementation commit-graph: define and use MAX_NUM_CHUNKS
This commit is contained in:
@ -11,7 +11,7 @@ static char const * const builtin_commit_graph_usage[] = {
|
||||
N_("git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"),
|
||||
N_("git commit-graph write [--object-dir <objdir>] [--append] "
|
||||
"[--split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] "
|
||||
"[--[no-]progress] <split options>"),
|
||||
"[--changed-paths] [--[no-]progress] <split options>"),
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -23,7 +23,7 @@ static const char * const builtin_commit_graph_verify_usage[] = {
|
||||
static const char * const builtin_commit_graph_write_usage[] = {
|
||||
N_("git commit-graph write [--object-dir <objdir>] [--append] "
|
||||
"[--split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] "
|
||||
"[--[no-]progress] <split options>"),
|
||||
"[--changed-paths] [--[no-]progress] <split options>"),
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -36,6 +36,7 @@ static struct opts_commit_graph {
|
||||
int split;
|
||||
int shallow;
|
||||
int progress;
|
||||
int enable_changed_paths;
|
||||
} opts;
|
||||
|
||||
static struct object_directory *find_odb(struct repository *r,
|
||||
@ -158,6 +159,8 @@ static int graph_write(int argc, const char **argv)
|
||||
N_("start walk at commits listed by stdin")),
|
||||
OPT_BOOL(0, "append", &opts.append,
|
||||
N_("include all commits already in the commit-graph file")),
|
||||
OPT_BOOL(0, "changed-paths", &opts.enable_changed_paths,
|
||||
N_("enable computation for changed paths")),
|
||||
OPT_BOOL(0, "progress", &opts.progress, N_("force progress reporting")),
|
||||
OPT_CALLBACK_F(0, "split", &split_opts.flags, NULL,
|
||||
N_("allow writing an incremental commit-graph file"),
|
||||
@ -193,6 +196,9 @@ static int graph_write(int argc, const char **argv)
|
||||
flags |= COMMIT_GRAPH_WRITE_SPLIT;
|
||||
if (opts.progress)
|
||||
flags |= COMMIT_GRAPH_WRITE_PROGRESS;
|
||||
if (opts.enable_changed_paths ||
|
||||
git_env_bool(GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS, 0))
|
||||
flags |= COMMIT_GRAPH_WRITE_BLOOM_FILTERS;
|
||||
|
||||
read_replace_refs = 0;
|
||||
odb = find_odb(the_repository, opts.obj_dir);
|
||||
|
Reference in New Issue
Block a user