| 3114 | } |
| 3115 | |
| 3116 | uint32_t *create_bitmap_mapping(struct bitmap_index *bitmap_git, |
| 3117 | struct packing_data *mapping) |
| 3118 | { |
| 3119 | struct repository *r = bitmap_repo(bitmap_git); |
| 3120 | uint32_t i, num_objects; |
| 3121 | uint32_t *reposition; |
| 3122 | |
| 3123 | if (!bitmap_is_midx(bitmap_git)) |
| 3124 | load_reverse_index(r, bitmap_git); |
| 3125 | else if (load_midx_revindex(bitmap_git->midx)) |
| 3126 | BUG("rebuild_existing_bitmaps: missing required rev-cache " |
| 3127 | "extension"); |
| 3128 | |
| 3129 | num_objects = bitmap_num_objects_total(bitmap_git); |
| 3130 | CALLOC_ARRAY(reposition, num_objects); |
| 3131 | |
| 3132 | for (i = 0; i < num_objects; ++i) { |
| 3133 | struct object_id oid; |
| 3134 | struct object_entry *oe; |
| 3135 | uint32_t index_pos; |
| 3136 | |
| 3137 | if (bitmap_is_midx(bitmap_git)) |
| 3138 | index_pos = pack_pos_to_midx(bitmap_git->midx, i); |
| 3139 | else |
| 3140 | index_pos = pack_pos_to_index(bitmap_git->pack, i); |
| 3141 | nth_bitmap_object_oid(bitmap_git, &oid, index_pos); |
| 3142 | oe = packlist_find(mapping, &oid); |
| 3143 | |
| 3144 | if (oe) { |
| 3145 | reposition[i] = oe_in_pack_pos(mapping, oe) + 1; |
| 3146 | if (!oe->hash) |
| 3147 | oe->hash = bitmap_name_hash(bitmap_git, index_pos); |
| 3148 | } |
| 3149 | } |
| 3150 | |
| 3151 | return reposition; |
| 3152 | } |
| 3153 | |
| 3154 | void free_bitmap_index(struct bitmap_index *b) |
| 3155 | { |
no test coverage detected