[PATCH 2/2] sha1_object_info: examine cached_object store too
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Feb 5, 2011, 14:03 UTC
- Message-ID
- <1296914582-619-2-git-send-email-pclouds@gmail.com>
- In-Reply-To
- <1296914582-619-1-git-send-email-pclouds@gmail.com>
Cached object store was added in d66b37b (Add pretend_sha1_file() interface. - 2007-02-04) as a way to temporarily inject some objects to object store.
But only read_sha1_file() knows about this store. While it will return an object from this store, sha1_object_info() will happily say "object not found".
Teach sha1_object_info() about the cached store for consistency.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- "git mktree" does not accept empty tree as it should do because of this.
sha1_file.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c index 9fd7e16..0b830c8 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -2020,9 +2020,17 @@ static int sha1_loose_object_info(const unsigned char *sha1, unsigned long *size int sha1_object_info(const unsigned char *sha1, unsigned long *sizep) { + struct cached_object *co; struct pack_entry e; int status; + co = find_cached_object(sha1); + if (co) { + if (sizep) + *sizep = co->size; + return co->type; + } + if (!find_pack_entry(sha1, &e)) { /* Most likely it's a loose object. */ status = sha1_loose_object_info(sha1, sizep);
-- 1.7.3.4.878.g439c7