aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2026-02-24 13:59:44 -0500
committerJunio C Hamano <gitster@pobox.com>2026-02-24 11:16:32 -0800
commit6e86f679248580bec5c105b37217862f3022b504 (patch)
tree75e780d855857c2cfaf7e265ef0200b7d952fe0f
parentde811c26bb97ac324b60883ae4f4db84a83be2f1 (diff)
downloadgit-6e86f679248580bec5c105b37217862f3022b504.tar.xz
midx: introduce `midx_get_checksum_hex()`
When trying to print out, say, the hexadecimal representation of a MIDX's hash, our code will do something like: hash_to_hex_algop(midx_get_checksum_hash(m), m->source->odb->repo->hash_algo); , which is both cumbersome and repetitive. In fact, all but a handful of callers to `midx_get_checksum_hash()` do exactly the above. Reduce the repetitive nature of calling `midx_get_checksum_hash()` by having it return a pointer into a static buffer containing the above result. For the handful of callers that do need to compare the raw bytes and don't want to deal with an encoded copy (e.g., because they are passing it to hasheq() or similar), they may still rely on `midx_get_checksum_hash()` which returns the raw bytes. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--midx-write.c6
-rw-r--r--midx.c6
-rw-r--r--midx.h1
-rw-r--r--pack-bitmap.c3
-rw-r--r--t/helper/test-read-midx.c4
5 files changed, 12 insertions, 8 deletions
diff --git a/midx-write.c b/midx-write.c
index 73d33752ef..13171d7e9c 100644
--- a/midx-write.c
+++ b/midx-write.c
@@ -1151,8 +1151,7 @@ static int write_midx_internal(struct odb_source *source,
while (m) {
if (flags & MIDX_WRITE_BITMAP && load_midx_revindex(m)) {
error(_("could not load reverse index for MIDX %s"),
- hash_to_hex_algop(midx_get_checksum_hash(m),
- m->source->odb->repo->hash_algo));
+ midx_get_checksum_hex(m));
goto cleanup;
}
ctx.num_multi_pack_indexes_before++;
@@ -1520,8 +1519,7 @@ static int write_midx_internal(struct odb_source *source,
for (uint32_t i = 0; i < ctx.num_multi_pack_indexes_before; i++) {
uint32_t j = ctx.num_multi_pack_indexes_before - i - 1;
- keep_hashes[j] = xstrdup(hash_to_hex_algop(midx_get_checksum_hash(m),
- r->hash_algo));
+ keep_hashes[j] = xstrdup(midx_get_checksum_hex(m));
m = m->base_midx;
}
diff --git a/midx.c b/midx.c
index 1d072bd993..bae4589232 100644
--- a/midx.c
+++ b/midx.c
@@ -24,6 +24,12 @@ void clear_incremental_midx_files_ext(struct odb_source *source, const char *ext
int cmp_idx_or_pack_name(const char *idx_or_pack_name,
const char *idx_name);
+const char *midx_get_checksum_hex(const struct multi_pack_index *m)
+{
+ return hash_to_hex_algop(midx_get_checksum_hash(m),
+ m->source->odb->repo->hash_algo);
+}
+
const unsigned char *midx_get_checksum_hash(const struct multi_pack_index *m)
{
return m->data + m->data_len - m->source->odb->repo->hash_algo->rawsz;
diff --git a/midx.h b/midx.h
index 62d6105195..a39bcc9d03 100644
--- a/midx.h
+++ b/midx.h
@@ -85,6 +85,7 @@ struct multi_pack_index {
#define MIDX_EXT_BITMAP "bitmap"
#define MIDX_EXT_MIDX "midx"
+const char *midx_get_checksum_hex(const struct multi_pack_index *m) /* static buffer */;
const unsigned char *midx_get_checksum_hash(const struct multi_pack_index *m);
void get_midx_filename(struct odb_source *source, struct strbuf *out);
void get_midx_filename_ext(struct odb_source *source, struct strbuf *out,
diff --git a/pack-bitmap.c b/pack-bitmap.c
index 6307bbdf1e..afc7fba019 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -2819,8 +2819,7 @@ void test_bitmap_walk(struct rev_info *revs)
if (bitmap_is_midx(found))
fprintf_ln(stderr, "Located via MIDX '%s'.",
- hash_to_hex_algop(midx_get_checksum_hash(found->midx),
- revs->repo->hash_algo));
+ midx_get_checksum_hex(found->midx));
else
fprintf_ln(stderr, "Located via pack '%s'.",
hash_to_hex_algop(found->pack->hash,
diff --git a/t/helper/test-read-midx.c b/t/helper/test-read-midx.c
index b8fefb1a12..9d42c58756 100644
--- a/t/helper/test-read-midx.c
+++ b/t/helper/test-read-midx.c
@@ -34,7 +34,7 @@ static int read_midx_file(const char *object_dir, const char *checksum,
return 1;
if (checksum) {
- while (m && strcmp(hash_to_hex(midx_get_checksum_hash(m)), checksum))
+ while (m && strcmp(midx_get_checksum_hex(m), checksum))
m = m->base_midx;
if (!m)
return 1;
@@ -94,7 +94,7 @@ static int read_midx_checksum(const char *object_dir)
m = setup_midx(object_dir);
if (!m)
return 1;
- printf("%s\n", hash_to_hex(midx_get_checksum_hash(m)));
+ printf("%s\n", midx_get_checksum_hex(m));
close_midx(m);
return 0;