grep: add repository to OID grep sources
Record the repository whenever an OID grep source is created, and teach the worker threads to explicitly provide the repository when accessing objects. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Reviewed-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
dd45471a37
commit
0693806bf8
7
grep.c
7
grep.c
@ -1863,7 +1863,8 @@ void grep_source_init_file(struct grep_source *gs, const char *name,
|
||||
}
|
||||
|
||||
void grep_source_init_oid(struct grep_source *gs, const char *name,
|
||||
const char *path, const struct object_id *oid)
|
||||
const char *path, const struct object_id *oid,
|
||||
struct repository *repo)
|
||||
{
|
||||
gs->type = GREP_SOURCE_OID;
|
||||
gs->name = xstrdup_or_null(name);
|
||||
@ -1872,6 +1873,7 @@ void grep_source_init_oid(struct grep_source *gs, const char *name,
|
||||
gs->size = 0;
|
||||
gs->driver = NULL;
|
||||
gs->identifier = oiddup(oid);
|
||||
gs->repo = repo;
|
||||
}
|
||||
|
||||
void grep_source_clear(struct grep_source *gs)
|
||||
@ -1900,7 +1902,8 @@ static int grep_source_load_oid(struct grep_source *gs)
|
||||
{
|
||||
enum object_type type;
|
||||
|
||||
gs->buf = read_object_file(gs->identifier, &type, &gs->size);
|
||||
gs->buf = repo_read_object_file(gs->repo, gs->identifier, &type,
|
||||
&gs->size);
|
||||
if (!gs->buf)
|
||||
return error(_("'%s': unable to read %s"),
|
||||
gs->name,
|
||||
|
||||
Reference in New Issue
Block a user