diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c index 644f7736c9..f2c374d017 100644 --- a/builtin/commit-graph.c +++ b/builtin/commit-graph.c @@ -319,6 +319,7 @@ static int cmd_commit_graph_write(int argc, string_list_append(&pack_indexes, packname.buf); } + write_opts.pack_indexes = &pack_indexes; strbuf_release(&packname); } else if (opts.stdin_commits) { oidset_init(&commits, 0); @@ -335,13 +336,11 @@ static int cmd_commit_graph_write(int argc, } } + write_opts.commits = &commits; stop_progress(&progress); } - if (write_commit_graph(repo, dir->abspath, - opts.stdin_packs ? &pack_indexes : NULL, - opts.stdin_commits ? &commits : NULL, - &write_opts)) + if (write_commit_graph(repo, dir->abspath, &write_opts)) result = 1; cleanup: diff --git a/builtin/fetch.c b/builtin/fetch.c index 637d7ddaa0..7278cee8ca 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -2943,20 +2943,15 @@ int cmd_fetch(int argc, write_opts.flags |= COMMIT_GRAPH_WRITE_PROGRESS; if (graph_write_mode != GRAPH_WRITE_TIPS) write_opts.flags |= COMMIT_GRAPH_WRITE_REACHABLE; + else + write_opts.commits = &updated_tips; if (graph_write_mode != GRAPH_WRITE_SKIP) { trace2_region_enter("fetch", "write-commit-graph", the_repository); - if (graph_write_mode == GRAPH_WRITE_TIPS) - write_commit_graph( - the_repository, - the_repository->objects->source->path, - NULL, &updated_tips, &write_opts); - else - write_commit_graph( - the_repository, - the_repository->objects->source->path, - NULL, NULL, &write_opts); + write_commit_graph(the_repository, + the_repository->objects->source->path, + &write_opts); trace2_region_leave("fetch", "write-commit-graph", the_repository); } diff --git a/builtin/gc.c b/builtin/gc.c index 709789dbf2..7bf88861df 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -742,7 +742,7 @@ int cmd_gc(int argc, write_opts.flags |= COMMIT_GRAPH_WRITE_PROGRESS; write_commit_graph(the_repository, the_repository->objects->source->path, - NULL, NULL, &write_opts); + &write_opts); } if (!daemonized) { diff --git a/commit-graph.c b/commit-graph.c index 97be0f7148..077213b533 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -41,7 +41,7 @@ void git_test_write_commit_graph_or_die(struct repository *repo) if (git_env_bool(GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS, 0)) opts.flags |= COMMIT_GRAPH_WRITE_BLOOM_FILTERS; - if (write_commit_graph(repo, repo->objects->source->path, NULL, NULL, &opts)) + if (write_commit_graph(repo, repo->objects->source->path, &opts)) die("failed to write commit-graph under GIT_TEST_COMMIT_GRAPH"); } @@ -2544,8 +2544,6 @@ out: int write_commit_graph(struct repository *r, const char *dir, - const struct string_list *const pack_indexes, - struct oidset *commits, const struct commit_graph_write_options *opts) { struct write_commit_graph_context ctx = { @@ -2563,7 +2561,7 @@ int write_commit_graph(struct repository *r, struct topo_level_slab topo_levels; struct commit_graph *g; - if (!!pack_indexes + !!commits + !!(opts->flags & COMMIT_GRAPH_WRITE_REACHABLE) > 1) + if (!!opts->pack_indexes + !!opts->commits + !!(opts->flags & COMMIT_GRAPH_WRITE_REACHABLE) > 1) BUG("attempting to write commit-graph with mutually incompatible options"); prepare_repo_settings(r); @@ -2644,12 +2642,12 @@ int write_commit_graph(struct repository *r, } } - if (pack_indexes) { + if (opts->pack_indexes) { ctx.order_by_pack = 1; - if ((res = fill_oids_from_packs(&ctx, pack_indexes))) + if ((res = fill_oids_from_packs(&ctx, opts->pack_indexes))) goto cleanup; - } else if (commits) { - if ((res = fill_oids_from_commits(&ctx, commits))) + } else if (opts->commits) { + if ((res = fill_oids_from_commits(&ctx, opts->commits))) goto cleanup; } else if (opts->flags & COMMIT_GRAPH_WRITE_REACHABLE) { fill_oids_from_reachable(&ctx, &reachable_commits); diff --git a/commit-graph.h b/commit-graph.h index 4adbd5f18d..0e03e82a04 100644 --- a/commit-graph.h +++ b/commit-graph.h @@ -171,6 +171,8 @@ enum commit_graph_split_flags { struct commit_graph_write_options { enum commit_graph_write_flags flags; + const struct string_list *pack_indexes; + struct oidset *commits; int size_multiple; int max_commits; timestamp_t expire_time; @@ -195,8 +197,6 @@ struct commit_graph_write_options { */ int write_commit_graph(struct repository *r, const char *dir, - const struct string_list *pack_indexes, - struct oidset *commits, const struct commit_graph_write_options *opts); #define COMMIT_GRAPH_VERIFY_SHALLOW (1 << 0)