builtin-config: Fix crash when using "-f <relative path>" from non-root dir
When your current directory is not at the root of the working tree, and you
use the "-f" option with a relative path, the current code tries to read
from a wrong file, since argv[2] is now beyond the end of the rearranged
argument list.
This patch replaces the incorrect argv[2] with the variable holding the
given config file name.
The bug was introduced by d64ec16
(git config: reorganize to use parseopt).
[jc: added test]
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e276f018f2
commit
65807ee697
@ -339,7 +339,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix)
|
|||||||
if (!is_absolute_path(given_config_file) && prefix)
|
if (!is_absolute_path(given_config_file) && prefix)
|
||||||
config_exclusive_filename = prefix_filename(prefix,
|
config_exclusive_filename = prefix_filename(prefix,
|
||||||
strlen(prefix),
|
strlen(prefix),
|
||||||
argv[2]);
|
given_config_file);
|
||||||
else
|
else
|
||||||
config_exclusive_filename = given_config_file;
|
config_exclusive_filename = given_config_file;
|
||||||
}
|
}
|
||||||
|
@ -398,6 +398,17 @@ test_expect_success 'alternative GIT_CONFIG' 'cmp output expect'
|
|||||||
test_expect_success 'alternative GIT_CONFIG (--file)' \
|
test_expect_success 'alternative GIT_CONFIG (--file)' \
|
||||||
'git config --file other-config -l > output && cmp output expect'
|
'git config --file other-config -l > output && cmp output expect'
|
||||||
|
|
||||||
|
test_expect_success 'refer config from subdirectory' '
|
||||||
|
mkdir x &&
|
||||||
|
(
|
||||||
|
cd x &&
|
||||||
|
echo strasse >expect
|
||||||
|
git config --get --file ../other-config ein.bahn >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
GIT_CONFIG=other-config git config anwohner.park ausweis
|
GIT_CONFIG=other-config git config anwohner.park ausweis
|
||||||
|
|
||||||
cat > expect << EOF
|
cat > expect << EOF
|
||||||
|
Loading…
Reference in New Issue
Block a user