Merge branch 'js/etc-config'

* js/etc-config:
  Make tests independent of global config files
  config: read system-wide defaults from /etc/gitconfig
This commit is contained in:
Junio C Hamano 2007-02-24 01:43:28 -08:00
commit cc58fc0684
5 changed files with 22 additions and 7 deletions

View File

@ -5,7 +5,8 @@ The git configuration file contains a number of variables that affect
the git command's behavior. `.git/config` file for each repository the git command's behavior. `.git/config` file for each repository
is used to store the information for that repository, and is used to store the information for that repository, and
`$HOME/.gitconfig` is used to store per user information to give `$HOME/.gitconfig` is used to store per user information to give
fallback values for `.git/config` file. fallback values for `.git/config` file. The file `/etc/gitconfig`
can be used to store system-wide defaults.
They can be used by both the git plumbing They can be used by both the git plumbing
and the porcelains. The variables are divided into sections, where and the porcelains. The variables are divided into sections, where

View File

@ -128,6 +128,7 @@ prefix = $(HOME)
bindir = $(prefix)/bin bindir = $(prefix)/bin
gitexecdir = $(bindir) gitexecdir = $(bindir)
template_dir = $(prefix)/share/git-core/templates/ template_dir = $(prefix)/share/git-core/templates/
ETC_GITCONFIG = $(prefix)/etc/gitconfig
# DESTDIR= # DESTDIR=
# default configuration for gitweb # default configuration for gitweb
@ -598,6 +599,7 @@ endif
# Shell quote (do not use $(call) to accommodate ancient setups); # Shell quote (do not use $(call) to accommodate ancient setups);
SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER)) SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER))
ETC_GITCONFIG_SQ = $(subst ','\'',$(ETC_GITCONFIG))
DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
bindir_SQ = $(subst ','\'',$(bindir)) bindir_SQ = $(subst ','\'',$(bindir))
@ -610,7 +612,8 @@ PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
LIBS = $(GITLIBS) $(EXTLIBS) LIBS = $(GITLIBS) $(EXTLIBS)
BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' $(COMPAT_CFLAGS) BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' \
-DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' $(COMPAT_CFLAGS)
LIB_OBJS += $(COMPAT_OBJS) LIB_OBJS += $(COMPAT_OBJS)
ALL_CFLAGS += $(BASIC_CFLAGS) ALL_CFLAGS += $(BASIC_CFLAGS)

View File

@ -64,7 +64,7 @@ static int get_value(const char* key_, const char* regex_)
int ret = -1; int ret = -1;
char *tl; char *tl;
char *global = NULL, *repo_config = NULL; char *global = NULL, *repo_config = NULL;
const char *local; const char *system_wide = NULL, *local;
local = getenv(CONFIG_ENVIRONMENT); local = getenv(CONFIG_ENVIRONMENT);
if (!local) { if (!local) {
@ -74,6 +74,7 @@ static int get_value(const char* key_, const char* regex_)
local = repo_config = xstrdup(git_path("config")); local = repo_config = xstrdup(git_path("config"));
if (home) if (home)
global = xstrdup(mkpath("%s/.gitconfig", home)); global = xstrdup(mkpath("%s/.gitconfig", home));
system_wide = ETC_GITCONFIG;
} }
key = xstrdup(key_); key = xstrdup(key_);
@ -103,11 +104,15 @@ static int get_value(const char* key_, const char* regex_)
} }
} }
if (do_all && system_wide)
git_config_from_file(show_config, system_wide);
if (do_all && global) if (do_all && global)
git_config_from_file(show_config, global); git_config_from_file(show_config, global);
git_config_from_file(show_config, local); git_config_from_file(show_config, local);
if (!do_all && !seen && global) if (!do_all && !seen && global)
git_config_from_file(show_config, global); git_config_from_file(show_config, global);
if (!do_all && !seen && system_wide)
git_config_from_file(show_config, system_wide);
free(key); free(key);
if (regexp) { if (regexp) {
@ -147,7 +152,10 @@ int cmd_config(int argc, const char **argv, const char *prefix)
} else { } else {
die("$HOME not set"); die("$HOME not set");
} }
} else if (!strcmp(argv[1], "--rename-section")) { }
else if (!strcmp(argv[1], "--system"))
setenv("GIT_CONFIG", ETC_GITCONFIG, 1);
else if (!strcmp(argv[1], "--rename-section")) {
int ret; int ret;
if (argc != 4) if (argc != 4)
usage(git_config_set_usage); usage(git_config_set_usage);
@ -159,7 +167,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
return 1; return 1;
} }
return 0; return 0;
} else }
else
break; break;
argc--; argc--;
argv++; argv++;

View File

@ -394,6 +394,8 @@ int git_config(config_fn_t fn)
* config file otherwise. */ * config file otherwise. */
filename = getenv(CONFIG_ENVIRONMENT); filename = getenv(CONFIG_ENVIRONMENT);
if (!filename) { if (!filename) {
if (!access(ETC_GITCONFIG, R_OK))
ret += git_config_from_file(fn, ETC_GITCONFIG);
home = getenv("HOME"); home = getenv("HOME");
filename = getenv(CONFIG_LOCAL_ENVIRONMENT); filename = getenv(CONFIG_LOCAL_ENVIRONMENT);
if (!filename) if (!filename)

View File

@ -255,8 +255,8 @@ test_done () {
PATH=$(pwd)/..:$PATH PATH=$(pwd)/..:$PATH
GIT_EXEC_PATH=$(pwd)/.. GIT_EXEC_PATH=$(pwd)/..
GIT_TEMPLATE_DIR=$(pwd)/../templates/blt GIT_TEMPLATE_DIR=$(pwd)/../templates/blt
HOME=$(pwd)/trash GIT_CONFIG=.git/config
export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR HOME export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG
GITPERLLIB=$(pwd)/../perl/blib/lib:$(pwd)/../perl/blib/arch/auto/Git GITPERLLIB=$(pwd)/../perl/blib/lib:$(pwd)/../perl/blib/arch/auto/Git
export GITPERLLIB export GITPERLLIB