diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2011-02-05 21:03:02 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-02-07 15:05:48 -0800 |
commit | c4d9986f5f35c22010ed6dd58351b89fd4ee0def (patch) | |
tree | 2fbf11d3af6db6718393f7f4f9d96176c97c9e50 | |
parent | c597ba801048be45d168b1f6335e91bab165448f (diff) | |
download | git-c4d9986f5f35c22010ed6dd58351b89fd4ee0def.tar.gz git-c4d9986f5f35c22010ed6dd58351b89fd4ee0def.tar.xz |
sha1_object_info: examine cached_object store too
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | sha1_file.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sha1_file.c b/sha1_file.c index 9fd7e166d..0b830c864 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); |