submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
Reuse config_from_gitmodules in repo_read_gitmodules to remove some duplication and also have a single point where the .gitmodules file is read. The change does not introduce any new behavior, the same gitmodules_cb config callback is still used, which only deals with configuration specific to submodules. The check about the repo's worktree is removed from repo_read_gitmodules because it's already performed in config_from_gitmodules. The config_from_gitmodules function is moved up in the file —unchanged— before its users to avoid a forward declaration. Signed-off-by: Antonio Ospite <ao2@ao2.it> Acked-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9a0fb3e772
commit
db64d1127f
@ -591,6 +591,23 @@ static void submodule_cache_check_init(struct repository *repo)
|
|||||||
submodule_cache_init(repo->submodule_cache);
|
submodule_cache_init(repo->submodule_cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note: This function is private for a reason, the '.gitmodules' file should
|
||||||
|
* not be used as as a mechanism to retrieve arbitrary configuration stored in
|
||||||
|
* the repository.
|
||||||
|
*
|
||||||
|
* Runs the provided config function on the '.gitmodules' file found in the
|
||||||
|
* working directory.
|
||||||
|
*/
|
||||||
|
static void config_from_gitmodules(config_fn_t fn, struct repository *repo, void *data)
|
||||||
|
{
|
||||||
|
if (repo->worktree) {
|
||||||
|
char *file = repo_worktree_path(repo, GITMODULES_FILE);
|
||||||
|
git_config_from_file(fn, file, data);
|
||||||
|
free(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int gitmodules_cb(const char *var, const char *value, void *data)
|
static int gitmodules_cb(const char *var, const char *value, void *data)
|
||||||
{
|
{
|
||||||
struct repository *repo = data;
|
struct repository *repo = data;
|
||||||
@ -608,19 +625,11 @@ void repo_read_gitmodules(struct repository *repo)
|
|||||||
{
|
{
|
||||||
submodule_cache_check_init(repo);
|
submodule_cache_check_init(repo);
|
||||||
|
|
||||||
if (repo->worktree) {
|
|
||||||
char *gitmodules;
|
|
||||||
|
|
||||||
if (repo_read_index(repo) < 0)
|
if (repo_read_index(repo) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gitmodules = repo_worktree_path(repo, GITMODULES_FILE);
|
|
||||||
|
|
||||||
if (!is_gitmodules_unmerged(repo->index))
|
if (!is_gitmodules_unmerged(repo->index))
|
||||||
git_config_from_file(gitmodules_cb, gitmodules, repo);
|
config_from_gitmodules(gitmodules_cb, repo, repo);
|
||||||
|
|
||||||
free(gitmodules);
|
|
||||||
}
|
|
||||||
|
|
||||||
repo->submodule_cache->gitmodules_read = 1;
|
repo->submodule_cache->gitmodules_read = 1;
|
||||||
}
|
}
|
||||||
@ -672,23 +681,6 @@ void submodule_free(struct repository *r)
|
|||||||
submodule_cache_clear(r->submodule_cache);
|
submodule_cache_clear(r->submodule_cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Note: This function is private for a reason, the '.gitmodules' file should
|
|
||||||
* not be used as as a mechanism to retrieve arbitrary configuration stored in
|
|
||||||
* the repository.
|
|
||||||
*
|
|
||||||
* Runs the provided config function on the '.gitmodules' file found in the
|
|
||||||
* working directory.
|
|
||||||
*/
|
|
||||||
static void config_from_gitmodules(config_fn_t fn, struct repository *repo, void *data)
|
|
||||||
{
|
|
||||||
if (repo->worktree) {
|
|
||||||
char *file = repo_worktree_path(repo, GITMODULES_FILE);
|
|
||||||
git_config_from_file(fn, file, data);
|
|
||||||
free(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct fetch_config {
|
struct fetch_config {
|
||||||
int *max_children;
|
int *max_children;
|
||||||
int *recurse_submodules;
|
int *recurse_submodules;
|
||||||
|
Loading…
Reference in New Issue
Block a user