/* Dumb servers support */
extern int update_server_info(int);
+extern int git_ignore_local_config;
typedef int (*config_fn_t)(const char *, const char *);
extern int git_default_config(const char *, const char *);
extern int git_config_from_file(config_fn_t fn, const char *);
#define MAXNAME (256)
+int git_ignore_local_config = 0;
static FILE *config_file;
static const char *config_file_name;
static int config_linenr;
ret = 0;
}
- ret += git_config_from_file(fn, git_path("config"));
+ if (!git_ignore_local_config)
+ ret += git_config_from_file(fn, git_path("config"));
return ret;
}
int i, dot;
int fd = -1, in_fd;
int ret;
- char* config_filename = strdup(git_path("config"));
- char* lock_file = strdup(git_path("config.lock"));
+ char *config_filename, *lock_file;
const char* last_dot = strrchr(key, '.');
+ if (git_ignore_local_config) {
+ const char *home = getenv("HOME");
+ if (!home)
+ die("No home?");
+ config_filename = strdup(mkpath("%s/.gitconfig", home));
+ lock_file = strdup(mkpath("%s/.gitconfig.lock", home));
+ } else {
+ config_filename = strdup(git_path("config"));
+ lock_file = strdup(git_path("config.lock"));
+ }
+
/*
* Since "key" actually contains the section name and the real
* key name separated by a dot, we have to know where the dot is.
* As a side effect, we make sure to transform only a valid
* existing config file.
*/
- if (git_config(store_aux)) {
- fprintf(stderr, "invalid config file\n");
+ if (git_config_from_file(store_aux, config_filename)) {
+ fprintf(stderr, "invalid config file: %s\n",
+ config_filename);
free(store.key);
if (store.value_regex != NULL) {
regfree(store.value_regex);
if (do_all && global)
git_config_from_file(show_config, global);
- git_config_from_file(show_config, git_path("config"));
+ if (!git_ignore_local_config)
+ git_config_from_file(show_config, git_path("config"));
if (!do_all && !seen)
git_config_from_file(show_config, global);
type = T_BOOL;
else if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l"))
return git_config(show_all_config);
+ else if (!strcmp(argv[1], "--no-local"))
+ git_ignore_local_config = 1;
else
break;
argc--;