Skip to content

Commit

Permalink
Add git_config_early()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Nguyễn Thái Ngọc Duy authored and Junio C Hamano committed Dec 22, 2010
1 parent 80d868b commit dbdf585
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
1 change: 1 addition & 0 deletions cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 *);
Expand Down
19 changes: 14 additions & 5 deletions config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand All @@ -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)
Expand All @@ -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.
*/
Expand Down

0 comments on commit dbdf585

Please sign in to comment.