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>
This commit is contained in:
parent
5982da9d2c
commit
5643557e63
@ -14,8 +14,8 @@ struct replace_object {
|
|||||||
* This internal function is only declared here for the benefit of
|
* This internal function is only declared here for the benefit of
|
||||||
* lookup_replace_object(). Please do not call it directly.
|
* 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(struct repository *r,
|
||||||
extern const struct object_id *do_lookup_replace_object_the_repository(const struct object_id *oid);
|
const struct object_id *oid);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If object sha1 should be replaced, return the replacement object's
|
* 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
|
* permanently-allocated value. This function always respects replace
|
||||||
* references, regardless of the value of check_replace_refs.
|
* 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)
|
||||||
{
|
{
|
||||||
int depth = MAXREPLACEDEPTH;
|
int depth = MAXREPLACEDEPTH;
|
||||||
const struct object_id *cur = oid;
|
const struct object_id *cur = oid;
|
||||||
|
|
||||||
prepare_replace_object(the_repository);
|
prepare_replace_object(r);
|
||||||
|
|
||||||
/* Try to recursively replace the object */
|
/* Try to recursively replace the object */
|
||||||
while (depth-- > 0) {
|
while (depth-- > 0) {
|
||||||
struct replace_object *repl_obj =
|
struct replace_object *repl_obj =
|
||||||
oidmap_get(the_repository->objects->replace_map, cur);
|
oidmap_get(r->objects->replace_map, cur);
|
||||||
if (!repl_obj)
|
if (!repl_obj)
|
||||||
return cur;
|
return cur;
|
||||||
cur = &repl_obj->replacement;
|
cur = &repl_obj->replacement;
|
||||||
|
Loading…
Reference in New Issue
Block a user