macOS: precompose startup_info->prefix
The "prefix" was precomposed for macOS in commit 5c327502
(MacOS:
precompose_argv_prefix(), 2021-02-03).
However, this commit forgot to update "startup_info->prefix" after
precomposing.
Move the (possible) precomposition towards the end of
setup_git_directory_gently(), so that precompose_string_if_needed()
can use git_config_get_bool("core.precomposeunicode") correctly.
Keep prefix, startup_info->prefix and GIT_PREFIX_ENVIRONMENT all in sync.
And as a result, the prefix no longer needs to be precomposed in git.c
Reported-by: Dmitry Torilov <d.torilov@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5020774aef
commit
c7d0e61016
2
git.c
2
git.c
@ -420,7 +420,7 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
|
|||||||
int nongit_ok;
|
int nongit_ok;
|
||||||
prefix = setup_git_directory_gently(&nongit_ok);
|
prefix = setup_git_directory_gently(&nongit_ok);
|
||||||
}
|
}
|
||||||
prefix = precompose_argv_prefix(argc, argv, prefix);
|
precompose_argv_prefix(argc, argv, NULL);
|
||||||
if (use_pager == -1 && p->option & (RUN_SETUP | RUN_SETUP_GENTLY) &&
|
if (use_pager == -1 && p->option & (RUN_SETUP | RUN_SETUP_GENTLY) &&
|
||||||
!(p->option & DELAY_PAGER_CONFIG))
|
!(p->option & DELAY_PAGER_CONFIG))
|
||||||
use_pager = check_pager_config(p->cmd);
|
use_pager = check_pager_config(p->cmd);
|
||||||
|
28
setup.c
28
setup.c
@ -1274,18 +1274,10 @@ const char *setup_git_directory_gently(int *nongit_ok)
|
|||||||
* the GIT_PREFIX environment variable must always match. For details
|
* the GIT_PREFIX environment variable must always match. For details
|
||||||
* see Documentation/config/alias.txt.
|
* see Documentation/config/alias.txt.
|
||||||
*/
|
*/
|
||||||
if (nongit_ok && *nongit_ok) {
|
if (nongit_ok && *nongit_ok)
|
||||||
startup_info->have_repository = 0;
|
startup_info->have_repository = 0;
|
||||||
startup_info->prefix = NULL;
|
|
||||||
setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
|
|
||||||
} else {
|
|
||||||
startup_info->have_repository = 1;
|
|
||||||
startup_info->prefix = prefix;
|
|
||||||
if (prefix)
|
|
||||||
setenv(GIT_PREFIX_ENVIRONMENT, prefix, 1);
|
|
||||||
else
|
else
|
||||||
setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
|
startup_info->have_repository = 1;
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Not all paths through the setup code will call 'set_git_dir()' (which
|
* Not all paths through the setup code will call 'set_git_dir()' (which
|
||||||
@ -1311,6 +1303,22 @@ const char *setup_git_directory_gently(int *nongit_ok)
|
|||||||
if (startup_info->have_repository)
|
if (startup_info->have_repository)
|
||||||
repo_set_hash_algo(the_repository, repo_fmt.hash_algo);
|
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(&dir);
|
||||||
strbuf_release(&gitdir);
|
strbuf_release(&gitdir);
|
||||||
|
Loading…
Reference in New Issue
Block a user