Commit 5643557e authored by Stefan Beller's avatar Stefan Beller Committed by Junio C Hamano

replace-object: allow do_lookup_replace_object to handle arbitrary repositories

Signed-off-by: Stefan Beller's avatarStefan Beller <>
Signed-off-by: default avatarJunio C Hamano <>
parent 5982da9d
......@@ -14,8 +14,8 @@ struct replace_object {
* This internal function is only declared here for the benefit of
* lookup_replace_object(). Please do not call it directly.
#define do_lookup_replace_object(r, s) do_lookup_replace_object_##r(s)
extern const struct object_id *do_lookup_replace_object_the_repository(const struct object_id *oid);
extern const struct object_id *do_lookup_replace_object(struct repository *r,
const struct object_id *oid);
* If object sha1 should be replaced, return the replacement object's
......@@ -53,17 +53,18 @@ static void prepare_replace_object(struct repository *r)
* permanently-allocated value. This function always respects replace
* references, regardless of the value of check_replace_refs.
const struct object_id *do_lookup_replace_object_the_repository(const struct object_id *oid)
const struct object_id *do_lookup_replace_object(struct repository *r,
const struct object_id *oid)
const struct object_id *cur = oid;
/* Try to recursively replace the object */
while (depth-- > 0) {
struct replace_object *repl_obj =
oidmap_get(the_repository->objects->replace_map, cur);
oidmap_get(r->objects->replace_map, cur);
if (!repl_obj)
return cur;
cur = &repl_obj->replacement;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment