diff options
author | Matheus Tavares <matheus.bernardino@usp.br> | 2020-01-16 03:39:55 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-01-17 22:52:14 +0100 |
commit | d7992421e1a0e3ea5f836d8906e0f8b197fb6c1e (patch) | |
tree | 5c6e3e4f5fa6c4dcedfc23f0537824585e17bc0d /submodule-config.c | |
parent | grep: replace grep_read_mutex by internal obj read lock (diff) | |
download | git-d7992421e1a0e3ea5f836d8906e0f8b197fb6c1e.tar.xz git-d7992421e1a0e3ea5f836d8906e0f8b197fb6c1e.zip |
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>
Diffstat (limited to 'submodule-config.c')
-rw-r--r-- | submodule-config.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/submodule-config.c b/submodule-config.c index 85064810b2..bd5e14ab20 100644 --- a/submodule-config.c +++ b/submodule-config.c @@ -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); } |