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>
This commit is contained in:
committed by
Junio C Hamano
parent
ef5b83f2cf
commit
4c9efe850d
@ -912,6 +912,44 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx,
|
|||||||
return 0;
|
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,
|
int write_commit_graph(const char *obj_dir,
|
||||||
struct string_list *pack_indexes,
|
struct string_list *pack_indexes,
|
||||||
struct string_list *commit_hex,
|
struct string_list *commit_hex,
|
||||||
@ -965,38 +1003,8 @@ int write_commit_graph(const char *obj_dir,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (commit_hex) {
|
if (commit_hex)
|
||||||
if (ctx->report_progress) {
|
fill_oids_from_commit_hex(ctx, commit_hex);
|
||||||
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 (!pack_indexes && !commit_hex) {
|
if (!pack_indexes && !commit_hex) {
|
||||||
if (ctx->report_progress)
|
if (ctx->report_progress)
|
||||||
|
|||||||
Reference in New Issue
Block a user