diff options
author | Derrick Stolee <dstolee@microsoft.com> | 2019-06-12 15:29:42 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-06-12 20:20:54 +0200 |
commit | 4c9efe850d75115a6deedd57072f1d7383bc03da (patch) | |
tree | 04fa1262aa7d2ee531c4f8ee64989ae73269069f | |
parent | commit-graph: extract fill_oids_from_packs() (diff) | |
download | git-4c9efe850d75115a6deedd57072f1d7383bc03da.tar.xz git-4c9efe850d75115a6deedd57072f1d7383bc03da.zip |
commit-graph: extract fill_oids_from_commit_hex()
The write_commit_graph() method is too complex, so we are
extracting helper functions one by one.
Extract fill_oids_from_commit_hex() that reads the given commit
id list and fille the oid list in the context.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | commit-graph.c | 72 |
1 files changed, 40 insertions, 32 deletions
diff --git a/commit-graph.c b/commit-graph.c index 02e5f8c651..4fae1fcdb2 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -912,6 +912,44 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx, return 0; } +static void fill_oids_from_commit_hex(struct write_commit_graph_context *ctx, + struct string_list *commit_hex) +{ + uint32_t i; + struct strbuf progress_title = STRBUF_INIT; + + if (ctx->report_progress) { + strbuf_addf(&progress_title, + Q_("Finding commits for commit graph from %d ref", + "Finding commits for commit graph from %d refs", + commit_hex->nr), + commit_hex->nr); + ctx->progress = start_delayed_progress( + progress_title.buf, + commit_hex->nr); + } + for (i = 0; i < commit_hex->nr; i++) { + const char *end; + struct object_id oid; + struct commit *result; + + display_progress(ctx->progress, i + 1); + if (commit_hex->items[i].string && + parse_oid_hex(commit_hex->items[i].string, &oid, &end)) + continue; + + result = lookup_commit_reference_gently(ctx->r, &oid, 1); + + if (result) { + ALLOC_GROW(ctx->oids.list, ctx->oids.nr + 1, ctx->oids.alloc); + oidcpy(&ctx->oids.list[ctx->oids.nr], &(result->object.oid)); + ctx->oids.nr++; + } + } + stop_progress(&ctx->progress); + strbuf_release(&progress_title); +} + int write_commit_graph(const char *obj_dir, struct string_list *pack_indexes, struct string_list *commit_hex, @@ -965,38 +1003,8 @@ int write_commit_graph(const char *obj_dir, goto cleanup; } - if (commit_hex) { - if (ctx->report_progress) { - strbuf_addf(&progress_title, - Q_("Finding commits for commit graph from %d ref", - "Finding commits for commit graph from %d refs", - commit_hex->nr), - commit_hex->nr); - ctx->progress = start_delayed_progress( - progress_title.buf, - commit_hex->nr); - } - for (i = 0; i < commit_hex->nr; i++) { - const char *end; - struct object_id oid; - struct commit *result; - - display_progress(ctx->progress, i + 1); - if (commit_hex->items[i].string && - parse_oid_hex(commit_hex->items[i].string, &oid, &end)) - continue; - - result = lookup_commit_reference_gently(ctx->r, &oid, 1); - - if (result) { - ALLOC_GROW(ctx->oids.list, ctx->oids.nr + 1, ctx->oids.alloc); - oidcpy(&ctx->oids.list[ctx->oids.nr], &(result->object.oid)); - ctx->oids.nr++; - } - } - stop_progress(&ctx->progress); - strbuf_reset(&progress_title); - } + if (commit_hex) + fill_oids_from_commit_hex(ctx, commit_hex); if (!pack_indexes && !commit_hex) { if (ctx->report_progress) |