1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-28 04:49:43 +01:00

Add git_config_early()

This version of git_config() will be used during repository setup.
As a repository is being set up, $GIT_DIR is not nailed down yet,
git_pathdup() should not be used to get $GIT_DIR/config.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy 2010-11-26 22:32:33 +07:00 committed by Junio C Hamano
parent 80d868b068
commit dbdf5854b2
2 changed files with 15 additions and 5 deletions

View file

@ -986,6 +986,7 @@ extern int git_config_parse_parameter(const char *text);
extern int git_config_parse_environment(void);
extern int git_config_from_parameters(config_fn_t fn, void *data);
extern int git_config(config_fn_t fn, void *);
extern int git_config_early(config_fn_t fn, void *, const char *repo_config);
extern int git_parse_ulong(const char *, unsigned long *);
extern int git_config_int(const char *, const char *);
extern unsigned long git_config_ulong(const char *, const char *);

View file

@ -835,10 +835,9 @@ int git_config_from_parameters(config_fn_t fn, void *data)
return 0;
}
int git_config(config_fn_t fn, void *data)
int git_config_early(config_fn_t fn, void *data, const char *repo_config)
{
int ret = 0, found = 0;
char *repo_config = NULL;
const char *home = NULL;
/* Setting $GIT_CONFIG makes git read _only_ the given config file. */
@ -860,12 +859,10 @@ int git_config(config_fn_t fn, void *data)
free(user_config);
}
repo_config = git_pathdup("config");
if (!access(repo_config, R_OK)) {
if (repo_config && !access(repo_config, R_OK)) {
ret += git_config_from_file(fn, repo_config, data);
found += 1;
}
free(repo_config);
ret += git_config_from_parameters(fn, data);
if (config_parameters)
@ -876,6 +873,18 @@ int git_config(config_fn_t fn, void *data)
return ret;
}
int git_config(config_fn_t fn, void *data)
{
char *repo_config = NULL;
int ret;
repo_config = git_pathdup("config");
ret = git_config_early(fn, data, repo_config);
if (repo_config)
free(repo_config);
return ret;
}
/*
* Find all the stuff for git_config_set() below.
*/