summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Beller <sbeller@google.com>2018-06-29 01:22:19 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-06-29 17:43:40 (GMT)
commit8e4b0b6047e3cfbe627de6694c2eeae6904b41a1 (patch)
treee4c036c6cb3d4aa6701ac507eaf3deaf77a37d4a
parent108ed1a3d88b04bb7a6d0b0a0e7c642a28a7845a (diff)
downloadgit-8e4b0b6047e3cfbe627de6694c2eeae6904b41a1.zip
git-8e4b0b6047e3cfbe627de6694c2eeae6904b41a1.tar.gz
git-8e4b0b6047e3cfbe627de6694c2eeae6904b41a1.tar.bz2
object.c: allow parse_object to handle arbitrary repositories
Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--object.c14
-rw-r--r--object.h3
2 files changed, 8 insertions, 9 deletions
diff --git a/object.c b/object.c
index cd870fe..b0faab8 100644
--- a/object.c
+++ b/object.c
@@ -245,28 +245,28 @@ struct object *parse_object_or_die(const struct object_id *oid,
die(_("unable to parse object: %s"), name ? name : oid_to_hex(oid));
}
-struct object *parse_object_the_repository(const struct object_id *oid)
+struct object *parse_object(struct repository *r, const struct object_id *oid)
{
unsigned long size;
enum object_type type;
int eaten;
- const struct object_id *repl = lookup_replace_object(the_repository, oid);
+ const struct object_id *repl = lookup_replace_object(r, oid);
void *buffer;
struct object *obj;
- obj = lookup_object(the_repository, oid->hash);
+ obj = lookup_object(r, oid->hash);
if (obj && obj->parsed)
return obj;
if ((obj && obj->type == OBJ_BLOB && has_object_file(oid)) ||
(!obj && has_object_file(oid) &&
- oid_object_info(the_repository, oid, NULL) == OBJ_BLOB)) {
+ oid_object_info(r, oid, NULL) == OBJ_BLOB)) {
if (check_object_signature(repl, NULL, 0, NULL) < 0) {
error("sha1 mismatch %s", oid_to_hex(oid));
return NULL;
}
- parse_blob_buffer(lookup_blob(the_repository, oid), NULL, 0);
- return lookup_object(the_repository, oid->hash);
+ parse_blob_buffer(lookup_blob(r, oid), NULL, 0);
+ return lookup_object(r, oid->hash);
}
buffer = read_object_file(oid, &type, &size);
@@ -277,7 +277,7 @@ struct object *parse_object_the_repository(const struct object_id *oid)
return NULL;
}
- obj = parse_object_buffer(the_repository, oid, type, size,
+ obj = parse_object_buffer(r, oid, type, size,
buffer, &eaten);
if (!eaten)
free(buffer);
diff --git a/object.h b/object.h
index 38198bb..fa5ca97 100644
--- a/object.h
+++ b/object.h
@@ -124,8 +124,7 @@ void *object_as_type(struct repository *r, struct object *obj, enum object_type
*
* Returns NULL if the object is missing or corrupt.
*/
-#define parse_object(r, oid) parse_object_##r(oid)
-struct object *parse_object_the_repository(const struct object_id *oid);
+struct object *parse_object(struct repository *r, const struct object_id *oid);
/*
* Like parse_object, but will die() instead of returning NULL. If the