summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-05-17 10:19:04 +0200
committerJunio C Hamano <gitster@pobox.com>2024-05-17 10:33:39 -0700
commit30aaff437fddd889ba429b50b96ea4c151c502c5 (patch)
tree21c333bae42ced8e44e48fc106924e47d87c97b1 /object.c
parent19c76e8235747a61a703fe3bf7a5e40caf6fa3fa (diff)
refs: pass repo when peeling objects
Both `peel_object()` and `peel_iterated_oid()` implicitly rely on `the_repository` to look up objects. Despite the fact that we want to get rid of `the_repository`, it also leads to some restrictions in our ref iterators when trying to retrieve the peeled value for a repository other than `the_repository`. Refactor these functions such that both take a repository as argument and remove the now-unnecessary restrictions. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object.c')
-rw-r--r--object.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/object.c b/object.c
index 995041926a..93b5d97fdb 100644
--- a/object.c
+++ b/object.c
@@ -207,12 +207,14 @@ struct object *lookup_object_by_type(struct repository *r,
}
}
-enum peel_status peel_object(const struct object_id *name, struct object_id *oid)
+enum peel_status peel_object(struct repository *r,
+ const struct object_id *name,
+ struct object_id *oid)
{
- struct object *o = lookup_unknown_object(the_repository, name);
+ struct object *o = lookup_unknown_object(r, name);
if (o->type == OBJ_NONE) {
- int type = oid_object_info(the_repository, name, NULL);
+ int type = oid_object_info(r, name, NULL);
if (type < 0 || !object_as_type(o, type, 0))
return PEEL_INVALID;
}
@@ -220,7 +222,7 @@ enum peel_status peel_object(const struct object_id *name, struct object_id *oid
if (o->type != OBJ_TAG)
return PEEL_NON_TAG;
- o = deref_tag_noverify(o);
+ o = deref_tag_noverify(r, o);
if (!o)
return PEEL_INVALID;