return 0;
}
-static void prepare_replace_object(void)
+static void prepare_replace_object(struct repository *r)
{
- if (the_repository->objects->replace_map)
+ if (r->objects->replace_map)
return;
- the_repository->objects->replace_map =
+ r->objects->replace_map =
xmalloc(sizeof(*the_repository->objects->replace_map));
- oidmap_init(the_repository->objects->replace_map, 0);
+ oidmap_init(r->objects->replace_map, 0);
- for_each_replace_ref(register_replace_ref, NULL);
-
- if (!the_repository->objects->replace_map->map.tablesize)
- check_replace_refs = 0;
+ for_each_replace_ref(r, register_replace_ref, NULL);
}
/* We allow "recursive" replacement. Only within reason, though */
* 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(const struct object_id *oid)
+const struct object_id *do_lookup_replace_object(struct repository *r,
+ const struct object_id *oid)
{
int depth = MAXREPLACEDEPTH;
const struct object_id *cur = oid;
- prepare_replace_object();
+ prepare_replace_object(r);
/* 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;