lookup_replace_object is a low-level function that most users of the object store do not need to use directly. Move it to replace-object.h to avoid a dependency loop in an upcoming change to its inline definition that will make use of repository.h. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- builtin/mktag.c | 1 + cache.h | 19 ------------------- object.c | 1 + replace-object.h | 22 ++++++++++++++++++++++ sha1_file.c | 1 + streaming.c | 1 + 6 files changed, 26 insertions(+), 19 deletions(-) diff --git a/builtin/mktag.c b/builtin/mktag.c index 031b750f06..5e40e2152f 100644 --- a/builtin/mktag.c +++ b/builtin/mktag.c @@ -1,5 +1,6 @@ #include "builtin.h" #include "tag.h" +#include "replace-object.h" /* * A signature file has a very simple fixed format: four lines diff --git a/cache.h b/cache.h index 720664e394..2a238d6398 100644 --- a/cache.h +++ b/cache.h @@ -1214,25 +1214,6 @@ static inline void *read_sha1_file(const unsigned char *sha1, enum object_type * return read_sha1_file_extended(sha1, type, size, 1); } -/* - * This internal function is only declared here for the benefit of - * lookup_replace_object(). Please do not call it directly. - */ -extern const unsigned char *do_lookup_replace_object(const unsigned char *sha1); - -/* - * If object sha1 should be replaced, return the replacement object's - * name (replaced recursively, if necessary). The return value is - * either sha1 or a pointer to a permanently-allocated value. When - * object replacement is suppressed, always return sha1. - */ -static inline const unsigned char *lookup_replace_object(const unsigned char *sha1) -{ - if (!check_replace_refs) - return sha1; - return do_lookup_replace_object(sha1); -} - /* Read and unpack a sha1 file into memory, write memory to a sha1 file */ extern int sha1_object_info(const unsigned char *, unsigned long *); extern int hash_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *sha1); diff --git a/object.c b/object.c index 4c2cf7ff5d..9f381c44eb 100644 --- a/object.c +++ b/object.c @@ -1,5 +1,6 @@ #include "cache.h" #include "object.h" +#include "replace-object.h" #include "blob.h" #include "tree.h" #include "commit.h" diff --git a/replace-object.h b/replace-object.h index 50731ec9c2..1e3e8805b9 100644 --- a/replace-object.h +++ b/replace-object.h @@ -1,9 +1,31 @@ #ifndef REPLACE_OBJECT_H #define REPLACE_OBJECT_H +#include "cache.h" +#include "repository.h" + struct replace_object { unsigned char original[GIT_MAX_RAWSZ]; unsigned char replacement[GIT_MAX_RAWSZ]; }; +/* + * This internal function is only declared here for the benefit of + * lookup_replace_object(). Please do not call it directly. + */ +extern const unsigned char *do_lookup_replace_object(const unsigned char *sha1); + +/* + * If object sha1 should be replaced, return the replacement object's + * name (replaced recursively, if necessary). The return value is + * either sha1 or a pointer to a permanently-allocated value. When + * object replacement is suppressed, always return sha1. + */ +static inline const unsigned char *lookup_replace_object(const unsigned char *sha1) +{ + if (!check_replace_refs) + return sha1; + return do_lookup_replace_object(sha1); +} + #endif /* REPLACE_OBJECT_H */ diff --git a/sha1_file.c b/sha1_file.c index 314ff55b47..68f1735476 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -23,6 +23,7 @@ #include "sha1-lookup.h" #include "bulk-checkin.h" #include "repository.h" +#include "replace-object.h" #include "streaming.h" #include "dir.h" #include "list.h" diff --git a/streaming.c b/streaming.c index 22d27df55e..29632065d0 100644 --- a/streaming.c +++ b/streaming.c @@ -5,6 +5,7 @@ #include "streaming.h" #include "repository.h" #include "object-store.h" +#include "replace-object.h" #include "packfile.h" enum input_source { -- 2.17.0.484.g0c8726318c-goog