@@ -1059,7 +1059,7 @@ static void write_reused_pack_one(struct packed_git *reuse_packfile,
(uintmax_t)base_offset,
reuse_packfile->pack_name);
- nth_packed_object_id(&base_oid, reuse_packfile,
+ nth_packed_object_id(the_repository, &base_oid, reuse_packfile,
pack_pos_to_index(reuse_packfile, base_pos));
len = encode_in_pack_object_header(header, sizeof(header),
@@ -2141,7 +2141,7 @@ static void check_object(struct object_entry *entry, uint32_t object_index)
uint32_t pos;
if (offset_to_pack_pos(p, ofs, &pos) < 0)
goto give_up;
- if (!nth_packed_object_id(&base_ref, p,
+ if (!nth_packed_object_id(the_repository, &base_ref, p,
pack_pos_to_index(p, pos)))
have_base = 1;
}
@@ -4036,7 +4036,7 @@ static void loosen_unused_packed_objects(void)
die(_("cannot open pack index"));
for (i = 0; i < p->num_objects; i++) {
- nth_packed_object_id(&oid, p, i);
+ nth_packed_object_id(the_repository, &oid, p, i);
if (!packlist_find(&to_pack, &oid) &&
!has_sha1_pack_kept_or_nonlocal(&oid) &&
!loosened_object_can_be_discarded(&oid, p->mtime)) {
@@ -227,7 +227,7 @@ static void fill_pack_entry(uint32_t pack_int_id,
struct pack_midx_entry *entry,
int preferred)
{
- if (nth_packed_object_id(&entry->oid, p, cur_object) < 0)
+ if (nth_packed_object_id(the_repository, &entry->oid, p, cur_object) < 0)
die(_("failed to locate object %d in packfile"), cur_object);
entry->pack_int_id = pack_int_id;
@@ -188,7 +188,7 @@ static void unique_in_pack(struct packed_git *p,
*/
for (i = first; i < num && !ds->ambiguous; i++) {
struct object_id oid;
- nth_packed_object_id(&oid, p, i);
+ nth_packed_object_id(ds->repo, &oid, p, i);
if (!match_hash(len, ds->bin_pfx.hash, oid.hash))
break;
update_candidates(ds, &oid);
@@ -776,14 +776,14 @@ static void find_abbrev_len_for_pack(struct packed_git *p,
*/
mad->init_len = 0;
if (!match) {
- if (!nth_packed_object_id(&oid, p, first))
+ if (!nth_packed_object_id(mad->repo, &oid, p, first))
extend_abbrev_len(&oid, mad);
} else if (first < num - 1) {
- if (!nth_packed_object_id(&oid, p, first + 1))
+ if (!nth_packed_object_id(mad->repo, &oid, p, first + 1))
extend_abbrev_len(&oid, mad);
}
if (first > 0) {
- if (!nth_packed_object_id(&oid, p, first - 1))
+ if (!nth_packed_object_id(mad->repo, &oid, p, first - 1))
extend_abbrev_len(&oid, mad);
}
mad->init_len = mad->cur_len;
@@ -318,7 +318,7 @@ static int nth_bitmap_object_oid(struct bitmap_index *index,
{
if (index->midx)
return nth_midxed_object_oid(oid, index->midx, n) ? 0 : -1;
- return nth_packed_object_id(oid, index->pack, n);
+ return nth_packed_object_id(the_repository, oid, index->pack, n);
}
static int load_bitmap_entries_v1(struct bitmap_index *index)
@@ -111,7 +111,7 @@ static int verify_packfile(struct repository *r,
off_t curpos;
int data_valid;
- if (nth_packed_object_id(&oid, p, entries[i].nr) < 0)
+ if (nth_packed_object_id(r, &oid, p, entries[i].nr) < 0)
BUG("unable to get oid of object %lu from %s",
(unsigned long)entries[i].nr, p->pack_name);
@@ -1273,7 +1273,7 @@ static int get_delta_base_oid(struct repository *repo, struct packed_git *p,
if (offset_to_pack_pos(p, base_offset, &base_pos) < 0)
return -1;
- return nth_packed_object_id(oid, p,
+ return nth_packed_object_id(repo, oid, p,
pack_pos_to_index(p, base_pos));
} else
return -1;
@@ -1288,7 +1288,7 @@ static int retry_bad_packed_offset(struct repository *r,
struct object_id oid;
if (offset_to_pack_pos(p, obj_offset, &pos) < 0)
return OBJ_BAD;
- nth_packed_object_id(&oid, p, pack_pos_to_index(p, pos));
+ nth_packed_object_id(r, &oid, p, pack_pos_to_index(p, pos));
mark_bad_packed_object(p, &oid);
type = oid_object_info(r, &oid, NULL);
if (type <= OBJ_NONE)
@@ -1723,7 +1723,7 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
index_pos = pack_pos_to_index(p, pack_pos);
if (check_pack_crc(p, &w_curs, obj_offset, len, index_pos)) {
struct object_id oid;
- nth_packed_object_id(&oid, p, index_pos);
+ nth_packed_object_id(r, &oid, p, index_pos);
error("bad packed object CRC for %s",
oid_to_hex(&oid));
mark_bad_packed_object(p, &oid);
@@ -1813,7 +1813,7 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
if (!(offset_to_pack_pos(p, obj_offset, &pos))) {
struct object_info oi = OBJECT_INFO_INIT;
- nth_packed_object_id(&base_oid, p,
+ nth_packed_object_id(r, &base_oid, p,
pack_pos_to_index(p, pos));
error("failed to read delta base object %s"
" at offset %"PRIuMAX" from %s",
@@ -1917,12 +1917,11 @@ int bsearch_pack(const struct object_id *oid, const struct packed_git *p, uint32
index_lookup, index_lookup_width, result);
}
-int nth_packed_object_id(struct object_id *oid,
- struct packed_git *p,
- uint32_t n)
+int nth_packed_object_id(struct repository *repo, struct object_id *oid,
+ struct packed_git *p, uint32_t n)
{
const unsigned char *index = p->index_data;
- const unsigned int hashsz = the_hash_algo->rawsz;
+ const unsigned int hashsz = repo->hash_algo->rawsz;
if (!index) {
if (open_pack_index(p))
return -1;
@@ -1933,11 +1932,11 @@ int nth_packed_object_id(struct object_id *oid,
index += 4 * 256;
if (p->index_version == 1) {
oidread(oid, index + st_add(st_mult(hashsz + 4, n), 4),
- the_repository->hash_algo);
+ repo->hash_algo);
} else {
index += 8;
oidread(oid, index + st_mult(hashsz, n),
- the_repository->hash_algo);
+ repo->hash_algo);
}
return 0;
}
@@ -2194,7 +2193,7 @@ int for_each_object_in_pack(struct packed_git *p,
else
index_pos = i;
- if (nth_packed_object_id(&oid, p, index_pos) < 0)
+ if (nth_packed_object_id(the_repository, &oid, p, index_pos) < 0)
return error("unable to get sha1 of object %u in %s",
index_pos, p->pack_name);
@@ -150,7 +150,8 @@ int bsearch_pack(const struct object_id *oid, const struct packed_git *p, uint32
* parameter. Open the index if it is not already open. Returns 0 on success,
* negative otherwise.
*/
-int nth_packed_object_id(struct object_id *, struct packed_git *, uint32_t n);
+int nth_packed_object_id(struct repository *repo, struct object_id *,
+ struct packed_git *, uint32_t n);
/*
* Return the offset of the nth object within the specified packfile.
@@ -16,7 +16,7 @@ static void dump_mtimes(struct packed_git *p)
for (i = 0; i < p->num_objects; i++) {
struct object_id oid;
- if (nth_packed_object_id(&oid, p, i) < 0)
+ if (nth_packed_object_id(the_repository, &oid, p, i) < 0)
die("could not load object id at position %"PRIu32, i);
printf("%s %"PRIu32"\n",
The function `nth_packed_object_id` currently relies on the global variable `the_repository`. To eliminate global variable usage in `packfile.c`, we should progressively shift the dependency on the_repository to higher layers. Let's remove its usage from this function and any related ones. Signed-off-by: Karthik Nayak <karthik.188@gmail.com> --- builtin/pack-objects.c | 6 +++--- midx-write.c | 2 +- object-name.c | 8 ++++---- pack-bitmap.c | 2 +- pack-check.c | 2 +- packfile.c | 21 ++++++++++----------- packfile.h | 3 ++- t/helper/test-pack-mtimes.c | 2 +- 8 files changed, 23 insertions(+), 23 deletions(-)