On Fri, Jul 31, 2020 at 9:52 AM Son Luong Ngoc via GitGitGadget <gitgitgadget@xxxxxxxxx> wrote: > > From: Son Luong Ngoc <sluongng@xxxxxxxxx> > > Add '--has-changed-paths' option to 'git commit-graph verify' subcommand > to validate whether the commit-graph was written with '--changed-paths' > option. > > Signed-off-by: Son Luong Ngoc <sluongng@xxxxxxxxx> [...] > It's probably going to take me a bit more time to write up some tests > for this, It would need some documentation too. > so I want to send it out first for comments. [...] > diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c > index 16c9f6101a..ce8a7cbe90 100644 > --- a/builtin/commit-graph.c > +++ b/builtin/commit-graph.c > @@ -18,7 +18,8 @@ static char const * const builtin_commit_graph_usage[] = { > }; > > static const char * const builtin_commit_graph_verify_usage[] = { > - N_("git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"), > + N_("git commit-graph verify [--object-dir <objdir>] [--shallow] " > + "[--has-changed-paths] [--[no-]progress]"), > NULL > }; > > @@ -37,6 +38,7 @@ static struct opts_commit_graph { > int append; > int split; > int shallow; > + int has_changed_paths; > int progress; > int enable_changed_paths; > } opts; > @@ -71,12 +73,14 @@ static int graph_verify(int argc, const char **argv) > int open_ok; > int fd; > struct stat st; > - int flags = 0; > + enum commit_graph_verify_flags flags = 0; > > static struct option builtin_commit_graph_verify_options[] = { > OPT_STRING(0, "object-dir", &opts.obj_dir, > N_("dir"), > N_("The object directory to store the graph")), > + OPT_BOOL(0, "has-changed-paths", &opts.has_changed_paths, > + N_("verify that the commit-graph includes changed paths")), > OPT_BOOL(0, "shallow", &opts.shallow, > N_("if the commit-graph is split, only verify the tip file")), > OPT_BOOL(0, "progress", &opts.progress, N_("force progress reporting")), > @@ -94,8 +98,10 @@ static int graph_verify(int argc, const char **argv) > opts.obj_dir = get_object_directory(); > if (opts.shallow) > flags |= COMMIT_GRAPH_VERIFY_SHALLOW; > + if (opts.has_changed_paths) > + flags |= COMMIT_GRAPH_VERIFY_CHANGED_PATHS; I wonder if OPT_BIT() could be used instead of OPT_BOOL() above to directly set the above flag, as the 'has_changed_paths' field in 'struct opts_commit_graph' seems to be used only for the purpose of setting this flag. > if (opts.progress) > - flags |= COMMIT_GRAPH_WRITE_PROGRESS; > + flags |= COMMIT_GRAPH_VERIFY_PROGRESS; Does this change belong to this patch? I think it would deserve an explanation in the commit message if that's the case. > odb = find_odb(the_repository, opts.obj_dir); > graph_name = get_commit_graph_filename(odb); > diff --git a/commit-graph.c b/commit-graph.c > index 1af68c297d..d83f5a2325 100644 > --- a/commit-graph.c > +++ b/commit-graph.c > @@ -250,7 +250,7 @@ struct commit_graph *load_commit_graph_one_fd_st(int fd, struct stat *st, > return ret; > } > > -static int verify_commit_graph_lite(struct commit_graph *g) > +static int verify_commit_graph_lite(struct commit_graph *g, int verify_changed_path) [...] > -int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags) > +int verify_commit_graph(struct repository *r, > + struct commit_graph *g, > + enum commit_graph_verify_flags flags) It seems to me that it would be more coherent to have both verify_commit_graph() and verify_commit_graph_lite() accept an 'enum commit_graph_verify_flags flags' argument. Right now the "has_changed_paths" option is first an int, then it's converted to a flag and then to an int again before being passed to verify_commit_graph_lite(). It would be simpler if it could be a flag all along. Thanks, Christian.