summaryrefslogtreecommitdiff
path: root/grep.c
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2021-08-16 21:09:56 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-09-08 18:48:05 (GMT)
commit0693806bf82fb76347e226d8fc5e69077c0a3df5 (patch)
treeb584ca85d7876dc390c4be149afee6a3af5dfbee /grep.c
parentdd45471a3717bcd6561e405371b81928214ad1b5 (diff)
downloadgit-0693806bf82fb76347e226d8fc5e69077c0a3df5.zip
git-0693806bf82fb76347e226d8fc5e69077c0a3df5.tar.gz
git-0693806bf82fb76347e226d8fc5e69077c0a3df5.tar.bz2
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>
Diffstat (limited to 'grep.c')
-rw-r--r--grep.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/grep.c b/grep.c
index 8a8105c..79598f2 100644
--- a/grep.c
+++ b/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,