cache.h: allow oid_object_info to handle arbitrary repositories
authorStefan Beller <>
Wed, 25 Apr 2018 18:21:06 +0000 (11:21 -0700)
committerJunio C Hamano <>
Thu, 26 Apr 2018 01:54:28 +0000 (10:54 +0900)
This involves also adapting oid_object_info_extended and a some
internal functions that are used to implement these. It all has to
happen in one patch, because of a single recursive chain of calls visits
all these functions.

oid_object_info_extended is also used in partial clones, which allow
fetching missing objects. As this series will not add the repository
struct to the transport code and fetch_object(), add a TODO note and
omit fetching if a user tries to use a partial clone in a repository
other than the_repository.

Among the functions modified to handle arbitrary repositories,
unpack_entry() is one of them. Note that it still references the globals
"delta_base_cache" and "delta_base_cached", but those are safe to be
referenced (the former is indexed partly by "struct packed_git *", which
is repo-specific, and the latter is only used to limit the size of the
former as an optimization).

Helped-by: Brandon Williams <>
Helped-by: Jonathan Tan <>
Signed-off-by: Jonathan Nieder <>
Signed-off-by: Stefan Beller <>
Reviewed-by: Jonathan Tan <>
Signed-off-by: Junio C Hamano <>

No differences found