midx-write.c: extract `fill_packs_from_midx()`
When write_midx_internal() loads an existing MIDX, all packs are copied forward into the new MIDX. Improve the readability of write_midx_internal() by extracting this functionality out into a separate function. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
364c0ffc5a
commit
c5e204af1f
64
midx-write.c
64
midx-write.c
|
@ -882,6 +882,40 @@ cleanup:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int fill_packs_from_midx(struct write_midx_context *ctx,
|
||||||
|
const char *preferred_pack_name, uint32_t flags)
|
||||||
|
{
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < ctx->m->num_packs; i++) {
|
||||||
|
ALLOC_GROW(ctx->info, ctx->nr + 1, ctx->alloc);
|
||||||
|
|
||||||
|
if (flags & MIDX_WRITE_REV_INDEX || preferred_pack_name) {
|
||||||
|
/*
|
||||||
|
* If generating a reverse index, need to have
|
||||||
|
* packed_git's loaded to compare their
|
||||||
|
* mtimes and object count.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* If a preferred pack is specified, need to
|
||||||
|
* have packed_git's loaded to ensure the chosen
|
||||||
|
* preferred pack has a non-zero object count.
|
||||||
|
*/
|
||||||
|
if (prepare_midx_pack(the_repository, ctx->m, i))
|
||||||
|
return error(_("could not load pack"));
|
||||||
|
|
||||||
|
if (open_pack_index(ctx->m->packs[i]))
|
||||||
|
die(_("could not open index for %s"),
|
||||||
|
ctx->m->packs[i]->pack_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
fill_pack_info(&ctx->info[ctx->nr++], ctx->m->packs[i],
|
||||||
|
ctx->m->pack_names[i], i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int write_midx_internal(const char *object_dir,
|
static int write_midx_internal(const char *object_dir,
|
||||||
struct string_list *packs_to_include,
|
struct string_list *packs_to_include,
|
||||||
struct string_list *packs_to_drop,
|
struct string_list *packs_to_drop,
|
||||||
|
@ -927,38 +961,12 @@ static int write_midx_internal(const char *object_dir,
|
||||||
ctx.info = NULL;
|
ctx.info = NULL;
|
||||||
ALLOC_ARRAY(ctx.info, ctx.alloc);
|
ALLOC_ARRAY(ctx.info, ctx.alloc);
|
||||||
|
|
||||||
if (ctx.m) {
|
if (ctx.m && fill_packs_from_midx(&ctx, preferred_pack_name,
|
||||||
for (i = 0; i < ctx.m->num_packs; i++) {
|
flags) < 0) {
|
||||||
ALLOC_GROW(ctx.info, ctx.nr + 1, ctx.alloc);
|
|
||||||
|
|
||||||
if (flags & MIDX_WRITE_REV_INDEX ||
|
|
||||||
preferred_pack_name) {
|
|
||||||
/*
|
|
||||||
* If generating a reverse index, need to have
|
|
||||||
* packed_git's loaded to compare their
|
|
||||||
* mtimes and object count.
|
|
||||||
*
|
|
||||||
* If a preferred pack is specified,
|
|
||||||
* need to have packed_git's loaded to
|
|
||||||
* ensure the chosen preferred pack has
|
|
||||||
* a non-zero object count.
|
|
||||||
*/
|
|
||||||
if (prepare_midx_pack(the_repository, ctx.m, i)) {
|
|
||||||
error(_("could not load pack"));
|
|
||||||
result = 1;
|
result = 1;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (open_pack_index(ctx.m->packs[i]))
|
|
||||||
die(_("could not open index for %s"),
|
|
||||||
ctx.m->packs[i]->pack_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
fill_pack_info(&ctx.info[ctx.nr++], ctx.m->packs[i],
|
|
||||||
ctx.m->pack_names[i], i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
start_pack = ctx.nr;
|
start_pack = ctx.nr;
|
||||||
|
|
||||||
ctx.pack_paths_checked = 0;
|
ctx.pack_paths_checked = 0;
|
||||||
|
|
Loading…
Reference in New Issue