projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'js/config' into pu
[git.git]
/
repo-config.c
diff --git
a/repo-config.c
b/repo-config.c
index
63eda1b
..
8c0bb20
100644
(file)
--- a/
repo-config.c
+++ b/
repo-config.c
@@
-64,12
+64,15
@@
static int show_config(const char* key_, const char* value_)
static int get_value(const char* key_, const char* regex_)
{
static int get_value(const char* key_, const char* regex_)
{
- int i;
+ char *tl;
+ const char *home = getenv("HOME");
+ const char *global = (home ? mkpath("%s/.gitconfig", home) : NULL);
- key = malloc(strlen(key_)+1);
- for (i = 0; key_[i]; i++)
- key[i] = tolower(key_[i]);
- key[i] = 0;
+ key = strdup(key_);
+ for (tl=key+strlen(key)-1; tl >= key && *tl != '.'; --tl)
+ *tl = tolower(*tl);
+ for (tl=key; *tl && *tl != '.'; ++tl)
+ *tl = tolower(*tl);
if (use_key_regexp) {
key_regexp = (regex_t*)malloc(sizeof(regex_t));
if (use_key_regexp) {
key_regexp = (regex_t*)malloc(sizeof(regex_t));
@@
-92,7
+95,13
@@
static int get_value(const char* key_, const char* regex_)
}
}
}
}
- git_config(show_config);
+ if (do_all && global)
+ git_config_from_file(show_config, global);
+ 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);
+
free(key);
if (regexp) {
regfree(regexp);
free(key);
if (regexp) {
regfree(regexp);
@@
-107,7
+116,8
@@
static int get_value(const char* key_, const char* regex_)
int main(int argc, const char **argv)
{
int main(int argc, const char **argv)
{
- setup_git_directory();
+ int nongit = 0;
+ setup_git_directory_gently(&nongit);
while (1 < argc) {
if (!strcmp(argv[1], "--int"))
while (1 < argc) {
if (!strcmp(argv[1], "--int"))
@@
-116,6
+126,8
@@
int main(int argc, const char **argv)
type = T_BOOL;
else if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l"))
return git_config(show_all_config);
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--;
else
break;
argc--;