MCPcopy Create free account
hub / github.com/git/git / midx_pack_order

Function midx_pack_order

midx-write.c:659–703  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

657}
658
659static uint32_t *midx_pack_order(struct write_midx_context *ctx)
660{
661 struct midx_pack_order_data *data;
662 uint32_t *pack_order, base_objects = 0;
663 uint32_t i;
664
665 trace2_region_enter("midx", "midx_pack_order", ctx->repo);
666
667 if (ctx->incremental && ctx->base_midx)
668 base_objects = ctx->base_midx->num_objects +
669 ctx->base_midx->num_objects_in_base;
670
671 ALLOC_ARRAY(pack_order, ctx->entries_nr);
672 ALLOC_ARRAY(data, ctx->entries_nr);
673
674 for (i = 0; i < ctx->entries_nr; i++) {
675 struct pack_midx_entry *e = &ctx->entries[i];
676 data[i].nr = i;
677 data[i].pack = midx_pack_perm(ctx, e->pack_int_id);
678 if (!e->preferred || ctx->compact)
679 data[i].pack |= (1U << 31);
680 data[i].offset = e->offset;
681 }
682
683 QSORT(data, ctx->entries_nr, midx_pack_order_cmp);
684
685 for (i = 0; i < ctx->entries_nr; i++) {
686 struct pack_midx_entry *e = &ctx->entries[data[i].nr];
687 struct pack_info *pack = &ctx->info[midx_pack_perm(ctx, e->pack_int_id)];
688 if (pack->bitmap_pos == BITMAP_POS_UNKNOWN)
689 pack->bitmap_pos = i + base_objects;
690 pack->bitmap_nr++;
691 pack_order[i] = data[i].nr;
692 }
693 for (i = 0; i < ctx->nr; i++) {
694 struct pack_info *pack = &ctx->info[i];
695 if (pack->bitmap_pos == BITMAP_POS_UNKNOWN)
696 pack->bitmap_pos = 0;
697 }
698 free(data);
699
700 trace2_region_leave("midx", "midx_pack_order", ctx->repo);
701
702 return pack_order;
703}
704
705static void write_midx_reverse_index(struct write_midx_context *ctx,
706 unsigned char *midx_hash)

Callers 1

write_midx_internalFunction · 0.85

Calls 1

midx_pack_permFunction · 0.85

Tested by

no test coverage detected