Skip to content

Commit 1a6768d

Browse files
pks-tgitster
authored andcommitted
pack-bitmap-write: stop depending on the_repository
There are multiple sites in "pack-bitmap-write.c" where we use the global `the_repository` variable, either explicitly or implicitly by using `the_hash_algo`. Refactor the code so that the `struct bitmap_writer` stores the repository it is getting initialized with. Like this, we can adapt callsites that use `the_repository` to instead use the repository provided by the writer. Remove the `USE_THE_REPOSITORY_VARIABLE` define. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent e5957ca commit 1a6768d

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

pack-bitmap-write.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#define USE_THE_REPOSITORY_VARIABLE
21
#define DISABLE_SIGN_COMPARE_WARNINGS
32

43
#include "git-compat-util.h"
@@ -48,6 +47,7 @@ void bitmap_writer_init(struct bitmap_writer *writer, struct repository *r,
4847
memset(writer, 0, sizeof(struct bitmap_writer));
4948
if (writer->bitmaps)
5049
BUG("bitmap writer already initialized");
50+
writer->repo = r;
5151
writer->bitmaps = kh_init_oid_map();
5252
writer->pseudo_merge_commits = kh_init_oid_map();
5353
writer->to_pack = pdata;
@@ -415,9 +415,9 @@ static void bitmap_builder_init(struct bitmap_builder *bb,
415415
bb->commits[bb->commits_nr++] = r->item;
416416
}
417417

418-
trace2_data_intmax("pack-bitmap-write", the_repository,
418+
trace2_data_intmax("pack-bitmap-write", writer->repo,
419419
"num_selected_commits", writer->selected_nr);
420-
trace2_data_intmax("pack-bitmap-write", the_repository,
420+
trace2_data_intmax("pack-bitmap-write", writer->repo,
421421
"num_maximal_commits", num_maximal);
422422

423423
release_revisions(&revs);
@@ -460,7 +460,7 @@ static int fill_bitmap_tree(struct bitmap_writer *writer,
460460
switch (object_type(entry.mode)) {
461461
case OBJ_TREE:
462462
if (fill_bitmap_tree(writer, bitmap,
463-
lookup_tree(the_repository, &entry.oid)) < 0)
463+
lookup_tree(writer->repo, &entry.oid)) < 0)
464464
return -1;
465465
break;
466466
case OBJ_BLOB:
@@ -536,7 +536,7 @@ static int fill_bitmap_commit(struct bitmap_writer *writer,
536536
return -1;
537537
bitmap_set(ent->bitmap, pos);
538538
prio_queue_put(tree_queue,
539-
repo_get_commit_tree(the_repository, c));
539+
repo_get_commit_tree(writer->repo, c));
540540
}
541541

542542
for (p = c->parents; p; p = p->next) {
@@ -590,11 +590,11 @@ int bitmap_writer_build(struct bitmap_writer *writer)
590590
int closed = 1; /* until proven otherwise */
591591

592592
if (writer->show_progress)
593-
writer->progress = start_progress(the_repository,
593+
writer->progress = start_progress(writer->repo,
594594
"Building bitmaps",
595595
writer->selected_nr);
596596
trace2_region_enter("pack-bitmap-write", "building_bitmaps_total",
597-
the_repository);
597+
writer->repo);
598598

599599
old_bitmap = prepare_bitmap_git(writer->to_pack->repo);
600600
if (old_bitmap)
@@ -645,10 +645,10 @@ int bitmap_writer_build(struct bitmap_writer *writer)
645645
free(mapping);
646646

647647
trace2_region_leave("pack-bitmap-write", "building_bitmaps_total",
648-
the_repository);
649-
trace2_data_intmax("pack-bitmap-write", the_repository,
648+
writer->repo);
649+
trace2_data_intmax("pack-bitmap-write", writer->repo,
650650
"building_bitmaps_reused", reused_bitmaps_nr);
651-
trace2_data_intmax("pack-bitmap-write", the_repository,
651+
trace2_data_intmax("pack-bitmap-write", writer->repo,
652652
"building_bitmaps_pseudo_merge_reused",
653653
reused_pseudo_merge_bitmaps_nr);
654654

@@ -711,7 +711,7 @@ void bitmap_writer_select_commits(struct bitmap_writer *writer,
711711
}
712712

713713
if (writer->show_progress)
714-
writer->progress = start_progress(the_repository,
714+
writer->progress = start_progress(writer->repo,
715715
"Selecting bitmap commits", 0);
716716

717717
for (;;) {
@@ -960,7 +960,7 @@ static void write_lookup_table(struct bitmap_writer *writer, struct hashfile *f,
960960
for (i = 0; i < bitmap_writer_nr_selected_commits(writer); i++)
961961
table_inv[table[i]] = i;
962962

963-
trace2_region_enter("pack-bitmap-write", "writing_lookup_table", the_repository);
963+
trace2_region_enter("pack-bitmap-write", "writing_lookup_table", writer->repo);
964964
for (i = 0; i < bitmap_writer_nr_selected_commits(writer); i++) {
965965
struct bitmapped_commit *selected = &writer->selected[table[i]];
966966
uint32_t xor_offset = selected->xor_offset;
@@ -987,7 +987,7 @@ static void write_lookup_table(struct bitmap_writer *writer, struct hashfile *f,
987987
hashwrite_be64(f, (uint64_t)offsets[table[i]]);
988988
hashwrite_be32(f, xor_row);
989989
}
990-
trace2_region_leave("pack-bitmap-write", "writing_lookup_table", the_repository);
990+
trace2_region_leave("pack-bitmap-write", "writing_lookup_table", writer->repo);
991991

992992
free(table);
993993
free(table_inv);
@@ -1008,7 +1008,7 @@ static void write_hash_cache(struct hashfile *f,
10081008
void bitmap_writer_set_checksum(struct bitmap_writer *writer,
10091009
const unsigned char *sha1)
10101010
{
1011-
hashcpy(writer->pack_checksum, sha1, the_repository->hash_algo);
1011+
hashcpy(writer->pack_checksum, sha1, writer->repo->hash_algo);
10121012
}
10131013

10141014
void bitmap_writer_finish(struct bitmap_writer *writer,
@@ -1030,15 +1030,15 @@ void bitmap_writer_finish(struct bitmap_writer *writer,
10301030
if (writer->pseudo_merges_nr)
10311031
options |= BITMAP_OPT_PSEUDO_MERGES;
10321032

1033-
f = hashfd(the_repository->hash_algo, fd, tmp_file.buf);
1033+
f = hashfd(writer->repo->hash_algo, fd, tmp_file.buf);
10341034

10351035
memcpy(header.magic, BITMAP_IDX_SIGNATURE, sizeof(BITMAP_IDX_SIGNATURE));
10361036
header.version = htons(default_version);
10371037
header.options = htons(flags | options);
10381038
header.entry_count = htonl(bitmap_writer_nr_selected_commits(writer));
1039-
hashcpy(header.checksum, writer->pack_checksum, the_repository->hash_algo);
1039+
hashcpy(header.checksum, writer->pack_checksum, writer->repo->hash_algo);
10401040

1041-
hashwrite(f, &header, sizeof(header) - GIT_MAX_RAWSZ + the_hash_algo->rawsz);
1041+
hashwrite(f, &header, sizeof(header) - GIT_MAX_RAWSZ + writer->repo->hash_algo->rawsz);
10421042
dump_bitmap(f, writer->commits);
10431043
dump_bitmap(f, writer->trees);
10441044
dump_bitmap(f, writer->blobs);
@@ -1072,7 +1072,7 @@ void bitmap_writer_finish(struct bitmap_writer *writer,
10721072
finalize_hashfile(f, NULL, FSYNC_COMPONENT_PACK_METADATA,
10731073
CSUM_HASH_IN_STREAM | CSUM_FSYNC | CSUM_CLOSE);
10741074

1075-
if (adjust_shared_perm(the_repository, tmp_file.buf))
1075+
if (adjust_shared_perm(writer->repo, tmp_file.buf))
10761076
die_errno("unable to make temporary bitmap file readable");
10771077

10781078
if (rename(tmp_file.buf, filename))

pack-bitmap.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ int bitmap_has_oid_in_uninteresting(struct bitmap_index *, const struct object_i
104104
off_t get_disk_usage_from_bitmap(struct bitmap_index *, struct rev_info *);
105105

106106
struct bitmap_writer {
107+
struct repository *repo;
107108
struct ewah_bitmap *commits;
108109
struct ewah_bitmap *trees;
109110
struct ewah_bitmap *blobs;

0 commit comments

Comments
 (0)