grep: use submodule-ODB-as-alternate lazy-addition

In the parent commit, Git was taught to add submodule ODBs as alternates
lazily, but grep does not use this because it computes the path to add
directly, not going through add_submodule_odb(). Add an equivalent to
add_submodule_odb() that takes the exact ODB path and teach grep to use
it.

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:52 -07:00 committed by Junio C Hamano
parent a35e03dee0
commit 8d33c3af0b
3 changed files with 7 additions and 1 deletions

View File

@ -450,7 +450,7 @@ static int grep_submodule(struct grep_opt *opt,
* store is no longer global and instead is a member of the repository * store is no longer global and instead is a member of the repository
* object. * object.
*/ */
add_to_alternates_memory(subrepo.objects->odb->path); add_submodule_odb_by_path(subrepo.objects->odb->path);
obj_read_unlock(); obj_read_unlock();
memcpy(&subopt, opt, sizeof(subopt)); memcpy(&subopt, opt, sizeof(subopt));

View File

@ -187,6 +187,11 @@ done:
return ret; return ret;
} }
void add_submodule_odb_by_path(const char *path)
{
string_list_insert(&added_submodule_odb_paths, xstrdup(path));
}
int register_all_submodule_odb_as_alternates(void) int register_all_submodule_odb_as_alternates(void)
{ {
int i; int i;

View File

@ -104,6 +104,7 @@ int bad_to_remove_submodule(const char *path, unsigned flags);
* the_repository. * the_repository.
*/ */
int add_submodule_odb(const char *path); int add_submodule_odb(const char *path);
void add_submodule_odb_by_path(const char *path);
int register_all_submodule_odb_as_alternates(void); int register_all_submodule_odb_as_alternates(void);
/* /*