replace-object: allow do_lookup_replace_object to handle arbitrary repositories

Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Stefan Beller committed Apr 11, 2018 at 17:21 UTC 5643557e63de2cd0b81297fe975b001fa5be2c0a
2 files changed +6 -5
replace-object.h
+2 -2
@@ -14,8 +14,8 @@ struct replace_object {
14 * This internal function is only declared here for the benefit of
15 * lookup_replace_object(). Please do not call it directly.
16 */
17 -#define do_lookup_replace_object(r, s) do_lookup_replace_object_##r(s)
18 -extern const struct object_id *do_lookup_replace_object_the_repository(const struct object_id *oid);
17 +extern const struct object_id *do_lookup_replace_object(struct repository *r,
18 + const struct object_id *oid);
19
20 /*
21 * If object sha1 should be replaced, return the replacement object's
replace_object.c
+4 -3
@@ -53,17 +53,18 @@ static void prepare_replace_object(struct repository *r)
53 * permanently-allocated value. This function always respects replace
54 * references, regardless of the value of check_replace_refs.
55 */
56 -const struct object_id *do_lookup_replace_object_the_repository(const struct object_id *oid)
56 +const struct object_id *do_lookup_replace_object(struct repository *r,
57 + const struct object_id *oid)
58 {
59 int depth = MAXREPLACEDEPTH;
60 const struct object_id *cur = oid;
61
61 - prepare_replace_object(the_repository);
62 + prepare_replace_object(r);
63
64 /* Try to recursively replace the object */
65 while (depth-- > 0) {
66 struct replace_object *repl_obj =
66 - oidmap_get(the_repository->objects->replace_map, cur);
67 + oidmap_get(r->objects->replace_map, cur);
68 if (!repl_obj)
69 return cur;
70 cur = &repl_obj->replacement;