@@ -455,7 +455,7 @@ static int grep_submodule(struct grep_opt *opt,
unsigned long size;
struct strbuf base = STRBUF_INIT;
- object = parse_object_or_die(oid, oid_to_hex(oid));
+ object = parse_object_or_die(the_repository, oid, NULL);
grep_read_lock();
data = read_object_with_reference(&subrepo,
@@ -1037,7 +1037,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
break;
}
- object = parse_object_or_die(&oid, arg);
+ object = parse_object_or_die(the_repository, &oid, arg);
if (!seen_dashdash)
verify_non_filename(prefix, arg);
add_object_array_with_path(object, arg, &list, oc.mode, oc.path);
@@ -154,8 +154,8 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
const char *name = *argv++;
if (!get_oid(name, &oid)) {
- struct object *object = parse_object_or_die(&oid,
- name);
+ struct object *object =
+ parse_object_or_die(the_repository, &oid, name);
add_pending_object(&revs, object, "");
}
else
@@ -315,14 +315,16 @@ static int compute_and_write_prerequisites(int bundle_fd,
if (buf.len > 0 && buf.buf[0] == '-') {
write_or_die(bundle_fd, buf.buf, buf.len);
if (!get_oid_hex(buf.buf + 1, &oid)) {
- struct object *object = parse_object_or_die(&oid,
- buf.buf);
+ struct object *object =
+ parse_object_or_die(the_repository,
+ &oid, buf.buf);
object->flags |= UNINTERESTING;
add_pending_object(revs, object, buf.buf);
}
} else if (!get_oid_hex(buf.buf, &oid)) {
- struct object *object = parse_object_or_die(&oid,
- buf.buf);
+ struct object *object =
+ parse_object_or_die(the_repository,
+ &oid, buf.buf);
object->flags |= SHOWN;
}
}
@@ -406,7 +408,8 @@ static int write_bundle_refs(int bundle_fd, struct rev_info *revs)
* end up triggering "empty bundle"
* error.
*/
- obj = parse_object_or_die(&oid, e->name);
+ obj = parse_object_or_die(the_repository, &oid,
+ e->name);
obj->flags |= SHOWN;
add_pending_object(revs, obj, e->name);
}
@@ -237,10 +237,11 @@ struct object *parse_object_buffer(struct repository *r, const struct object_id
return obj;
}
-struct object *parse_object_or_die(const struct object_id *oid,
+struct object *parse_object_or_die(struct repository *r,
+ const struct object_id *oid,
const char *name)
{
- struct object *o = parse_object(the_repository, oid);
+ struct object *o = parse_object(r, oid);
if (o)
return o;
@@ -134,7 +134,9 @@ struct object *parse_object(struct repository *r, const struct object_id *oid);
* "name" parameter is not NULL, it is included in the error message
* (otherwise, the hex object ID is given).
*/
-struct object *parse_object_or_die(const struct object_id *oid, const char *name);
+struct object *parse_object_or_die(struct repository *r,
+ const struct object_id *oid,
+ const char *name);
/* Given the result of read_sha1_file(), returns the object after
* parsing it. eaten_p indicates if the object has a borrowed copy
@@ -699,7 +699,7 @@ struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs)
struct object *object = revs->pending.objects[i].item;
if (object->type == OBJ_NONE)
- parse_object_or_die(&object->oid, NULL);
+ parse_object_or_die(the_repository, &object->oid, NULL);
while (object->type == OBJ_TAG) {
struct tag *tag = (struct tag *) object;
@@ -711,7 +711,8 @@ struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs)
if (!tag->tagged)
die("bad tag");
- object = parse_object_or_die(&tag->tagged->oid, NULL);
+ object = parse_object_or_die(the_repository,
+ &tag->tagged->oid, NULL);
}
if (object->flags & UNINTERESTING)
@@ -37,7 +37,7 @@ static int add_one_ref(const char *path, const struct object_id *oid,
return 0;
}
- object = parse_object_or_die(oid, path);
+ object = parse_object_or_die(the_repository, oid, path);
add_pending_object(revs, object, "");
return 0;
@@ -86,7 +86,7 @@ static void add_recent_object(const struct object_id *oid,
switch (type) {
case OBJ_TAG:
case OBJ_COMMIT:
- obj = parse_object_or_die(oid, NULL);
+ obj = parse_object_or_die(the_repository, oid, NULL);
break;
case OBJ_TREE:
obj = (struct object *)lookup_tree(the_repository, oid);
@@ -1220,7 +1220,7 @@ static int parse_want_ref(struct packet_writer *writer, const char *line,
item = string_list_append(wanted_refs, arg);
item->util = oiddup(&oid);
- o = parse_object_or_die(&oid, arg);
+ o = parse_object_or_die(the_repository, &oid, arg);
if (!(o->flags & WANTED)) {
o->flags |= WANTED;
add_object_array(o, NULL, want_obj);
parse_object_or_die() was added before parse_object() learned to handle arbitrary repositories. Now that it did, let's also bring this behavior improvement to the former, adding a struct repository argument. Also adjust the callers and, while we are here, avoid using `oid_to_hex(oid)` for the third parameter as it's the default when NULL is given. This will be used in the following patch, to allow git-grep to parse submodule's objects. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> --- builtin/grep.c | 4 ++-- builtin/prune.c | 4 ++-- bundle.c | 13 ++++++++----- object.c | 5 +++-- object.h | 4 +++- pack-bitmap.c | 5 +++-- reachable.c | 4 ++-- upload-pack.c | 2 +- 8 files changed, 24 insertions(+), 17 deletions(-)