]> git.ipfire.org Git - thirdparty/git.git/blobdiff - setup.c
Git 2.32.2
[thirdparty/git.git] / setup.c
diff --git a/setup.c b/setup.c
index aad9ace0af97efe342383616b2d800f226df0f4a..f4c9a542c2c21ce95ff2f841bd419400263200a2 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -1335,18 +1335,10 @@ const char *setup_git_directory_gently(int *nongit_ok)
         * the GIT_PREFIX environment variable must always match. For details
         * see Documentation/config/alias.txt.
         */
-       if (nongit_ok && *nongit_ok) {
+       if (nongit_ok && *nongit_ok)
                startup_info->have_repository = 0;
-               startup_info->prefix = NULL;
-               setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
-       } else {
+       else
                startup_info->have_repository = 1;
-               startup_info->prefix = prefix;
-               if (prefix)
-                       setenv(GIT_PREFIX_ENVIRONMENT, prefix, 1);
-               else
-                       setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
-       }
 
        /*
         * Not all paths through the setup code will call 'set_git_dir()' (which
@@ -1372,6 +1364,22 @@ const char *setup_git_directory_gently(int *nongit_ok)
                if (startup_info->have_repository)
                        repo_set_hash_algo(the_repository, repo_fmt.hash_algo);
        }
+       /*
+        * Since precompose_string_if_needed() needs to look at
+        * the core.precomposeunicode configuration, this
+        * has to happen after the above block that finds
+        * out where the repository is, i.e. a preparation
+        * for calling git_config_get_bool().
+        */
+       if (prefix) {
+               prefix = precompose_string_if_needed(prefix);
+               startup_info->prefix = prefix;
+               setenv(GIT_PREFIX_ENVIRONMENT, prefix, 1);
+       } else {
+               startup_info->prefix = NULL;
+               setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
+       }
+
 
        strbuf_release(&dir);
        strbuf_release(&gitdir);