Merge branch 'jk/noetcconfig'
* jk/noetcconfig: fix config reading in tests allow suppressing of global and system config Conflicts: cache.h
This commit is contained in:
commit
fef1c4c0a0
@ -79,9 +79,10 @@ static int get_value(const char* key_, const char* regex_)
|
||||
local = getenv(CONFIG_LOCAL_ENVIRONMENT);
|
||||
if (!local)
|
||||
local = repo_config = xstrdup(git_path("config"));
|
||||
if (home)
|
||||
if (git_config_global() && home)
|
||||
global = xstrdup(mkpath("%s/.gitconfig", home));
|
||||
system_wide = git_etc_gitconfig();
|
||||
if (git_config_system())
|
||||
system_wide = git_etc_gitconfig();
|
||||
}
|
||||
|
||||
key = xstrdup(key_);
|
||||
|
3
cache.h
3
cache.h
@ -631,6 +631,9 @@ extern int git_config_set_multivar(const char *, const char *, const char *, int
|
||||
extern int git_config_rename_section(const char *, const char *);
|
||||
extern const char *git_etc_gitconfig(void);
|
||||
extern int check_repository_format_version(const char *var, const char *value);
|
||||
extern int git_env_bool(const char *, int);
|
||||
extern int git_config_system(void);
|
||||
extern int git_config_global(void);
|
||||
extern int config_error_nonbool(const char *);
|
||||
|
||||
#define MAX_GITNAME (1000)
|
||||
|
20
config.c
20
config.c
@ -493,6 +493,22 @@ const char *git_etc_gitconfig(void)
|
||||
return system_wide;
|
||||
}
|
||||
|
||||
int git_env_bool(const char *k, int def)
|
||||
{
|
||||
const char *v = getenv(k);
|
||||
return v ? git_config_bool(k, v) : def;
|
||||
}
|
||||
|
||||
int git_config_system(void)
|
||||
{
|
||||
return !git_env_bool("GIT_CONFIG_NOSYSTEM", 0);
|
||||
}
|
||||
|
||||
int git_config_global(void)
|
||||
{
|
||||
return !git_env_bool("GIT_CONFIG_NOGLOBAL", 0);
|
||||
}
|
||||
|
||||
int git_config(config_fn_t fn)
|
||||
{
|
||||
int ret = 0;
|
||||
@ -505,7 +521,7 @@ int git_config(config_fn_t fn)
|
||||
* config file otherwise. */
|
||||
filename = getenv(CONFIG_ENVIRONMENT);
|
||||
if (!filename) {
|
||||
if (!access(git_etc_gitconfig(), R_OK))
|
||||
if (git_config_system() && !access(git_etc_gitconfig(), R_OK))
|
||||
ret += git_config_from_file(fn, git_etc_gitconfig());
|
||||
home = getenv("HOME");
|
||||
filename = getenv(CONFIG_LOCAL_ENVIRONMENT);
|
||||
@ -513,7 +529,7 @@ int git_config(config_fn_t fn)
|
||||
filename = repo_config = xstrdup(git_path("config"));
|
||||
}
|
||||
|
||||
if (home) {
|
||||
if (git_config_global() && home) {
|
||||
char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
|
||||
if (!access(user_config, R_OK))
|
||||
ret = git_config_from_file(fn, user_config);
|
||||
|
@ -33,9 +33,9 @@ test_rev_parse() {
|
||||
test_rev_parse toplevel false false true ''
|
||||
|
||||
cd .git || exit 1
|
||||
test_rev_parse .git/ true true false ''
|
||||
test_rev_parse .git/ false true false ''
|
||||
cd objects || exit 1
|
||||
test_rev_parse .git/objects/ true true false ''
|
||||
test_rev_parse .git/objects/ false true false ''
|
||||
cd ../.. || exit 1
|
||||
|
||||
mkdir -p sub/dir || exit 1
|
||||
|
@ -324,8 +324,11 @@ test_done () {
|
||||
PATH=$(pwd)/..:$PATH
|
||||
GIT_EXEC_PATH=$(pwd)/..
|
||||
GIT_TEMPLATE_DIR=$(pwd)/../templates/blt
|
||||
GIT_CONFIG=.git/config
|
||||
export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG
|
||||
unset GIT_CONFIG
|
||||
unset GIT_CONFIG_LOCAL
|
||||
GIT_CONFIG_NOSYSTEM=1
|
||||
GIT_CONFIG_NOGLOBAL=1
|
||||
export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_CONFIG_NOGLOBAL
|
||||
|
||||
GITPERLLIB=$(pwd)/../perl/blib/lib:$(pwd)/../perl/blib/arch/auto/Git
|
||||
export GITPERLLIB
|
||||
|
Loading…
Reference in New Issue
Block a user