submodule-config: add skip_if_read option to repo_read_gitmodules()
Currently, submodule-config.c doesn't have an externally accessible function to read gitmodules only if it wasn't already read. But this exact behavior is internally implemented by gitmodules_read_check(), to perform a lazy load. Let's merge this function with repo_read_gitmodules() adding a 'skip_if_read' which allows both internal and external callers to access this functionality. This simplifies a little the code. The added option will also be used in the following patch. Signed-off-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
1d1729caeb
commit
d7992421e1
@ -674,10 +674,13 @@ static int gitmodules_cb(const char *var, const char *value, void *data)
|
||||
return parse_config(var, value, ¶meter);
|
||||
}
|
||||
|
||||
void repo_read_gitmodules(struct repository *repo)
|
||||
void repo_read_gitmodules(struct repository *repo, int skip_if_read)
|
||||
{
|
||||
submodule_cache_check_init(repo);
|
||||
|
||||
if (repo->submodule_cache->gitmodules_read && skip_if_read)
|
||||
return;
|
||||
|
||||
if (repo_read_index(repo) < 0)
|
||||
return;
|
||||
|
||||
@ -703,20 +706,11 @@ void gitmodules_config_oid(const struct object_id *commit_oid)
|
||||
the_repository->submodule_cache->gitmodules_read = 1;
|
||||
}
|
||||
|
||||
static void gitmodules_read_check(struct repository *repo)
|
||||
{
|
||||
submodule_cache_check_init(repo);
|
||||
|
||||
/* read the repo's .gitmodules file if it hasn't been already */
|
||||
if (!repo->submodule_cache->gitmodules_read)
|
||||
repo_read_gitmodules(repo);
|
||||
}
|
||||
|
||||
const struct submodule *submodule_from_name(struct repository *r,
|
||||
const struct object_id *treeish_name,
|
||||
const char *name)
|
||||
{
|
||||
gitmodules_read_check(r);
|
||||
repo_read_gitmodules(r, 1);
|
||||
return config_from(r->submodule_cache, treeish_name, name, lookup_name);
|
||||
}
|
||||
|
||||
@ -724,7 +718,7 @@ const struct submodule *submodule_from_path(struct repository *r,
|
||||
const struct object_id *treeish_name,
|
||||
const char *path)
|
||||
{
|
||||
gitmodules_read_check(r);
|
||||
repo_read_gitmodules(r, 1);
|
||||
return config_from(r->submodule_cache, treeish_name, path, lookup_path);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user