]> git.ipfire.org Git - thirdparty/git.git/blobdiff - config.c
config: respect commondir
[thirdparty/git.git] / config.c
index e8dbf9e64a36ab77b4814403d291bd95e1c94843..edc0d1770860dcfc814e698aa34d6d70d5f3a5b0 100644 (file)
--- a/config.c
+++ b/config.c
@@ -1531,8 +1531,8 @@ static int do_git_config_sequence(const struct config_options *opts,
        char *user_config = expand_user_path("~/.gitconfig", 0);
        char *repo_config;
 
-       if (opts->git_dir)
-               repo_config = mkpathdup("%s/config", opts->git_dir);
+       if (opts->commondir)
+               repo_config = mkpathdup("%s/config", opts->commondir);
        else if (have_git_dir())
                repo_config = git_pathdup("config");
        else
@@ -1644,7 +1644,8 @@ void read_early_config(config_fn_t cb, void *data)
 
        opts.respect_includes = 1;
 
-       if (have_git_dir())
+       if (have_git_dir()) {
+               opts.commondir = get_git_common_dir();
                opts.git_dir = get_git_dir();
        /*
         * When setup_git_directory() was not yet asked to discover the
@@ -1654,8 +1655,10 @@ void read_early_config(config_fn_t cb, void *data)
         * notably, the current working directory is still the same after the
         * call).
         */
-       else if (!discover_git_directory(&commondir, &gitdir))
+       } else if (!discover_git_directory(&commondir, &gitdir)) {
+               opts.commondir = commondir.buf;
                opts.git_dir = gitdir.buf;
+       }
 
        git_config_with_options(cb, data, NULL, &opts);