grep: read submodule entry with explicit repo

Replace an existing parse_object_or_die() call (which implicitly works
on the_repository) with a function call that allows a repository to be
passed in. There is no such direct equivalent to parse_object_or_die(),
but we only need the type of the object, so replace with
oid_object_info().

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Reviewed-by: Emily Shaffer <emilyshaffer@google.com>
Reviewed-by: Matheus Tavares <matheus.bernardino@usp.br>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Tan 2021-08-16 14:09:54 -07:00 committed by Junio C Hamano
parent 50d92b5f03
commit 78ca584f1c

View File

@ -457,27 +457,27 @@ static int grep_submodule(struct grep_opt *opt,
subopt.repo = &subrepo; subopt.repo = &subrepo;
if (oid) { if (oid) {
struct object *object; enum object_type object_type;
struct tree_desc tree; struct tree_desc tree;
void *data; void *data;
unsigned long size; unsigned long size;
struct strbuf base = STRBUF_INIT; struct strbuf base = STRBUF_INIT;
obj_read_lock(); obj_read_lock();
object = parse_object_or_die(oid, NULL); object_type = oid_object_info(&subrepo, oid, NULL);
obj_read_unlock(); obj_read_unlock();
data = read_object_with_reference(&subrepo, data = read_object_with_reference(&subrepo,
&object->oid, tree_type, oid, tree_type,
&size, NULL); &size, NULL);
if (!data) if (!data)
die(_("unable to read tree (%s)"), oid_to_hex(&object->oid)); die(_("unable to read tree (%s)"), oid_to_hex(oid));
strbuf_addstr(&base, filename); strbuf_addstr(&base, filename);
strbuf_addch(&base, '/'); strbuf_addch(&base, '/');
init_tree_desc(&tree, data, size); init_tree_desc(&tree, data, size);
hit = grep_tree(&subopt, pathspec, &tree, &base, base.len, hit = grep_tree(&subopt, pathspec, &tree, &base, base.len,
object->type == OBJ_COMMIT); object_type == OBJ_COMMIT);
strbuf_release(&base); strbuf_release(&base);
free(data); free(data);
} else { } else {