diff options
author | Johan Herland <johan@herland.net> | 2010-01-26 16:02:16 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-26 11:20:06 -0800 |
commit | 65807ee697a28cb30b8ad38ebb8b84cebd3f255d (patch) | |
tree | 72a223d1ca8f37f463c7f21e61b92504c924f151 | |
parent | GIT 1.6.3.4 (diff) | |
download | tgif-65807ee697a28cb30b8ad38ebb8b84cebd3f255d.tar.xz |
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>
-rw-r--r-- | builtin-config.c | 2 | ||||
-rwxr-xr-x | t/t1300-repo-config.sh | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/builtin-config.c b/builtin-config.c index a81bc8bbf0..5a5d214bb8 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -339,7 +339,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix) if (!is_absolute_path(given_config_file) && prefix) config_exclusive_filename = prefix_filename(prefix, strlen(prefix), - argv[2]); + given_config_file); else config_exclusive_filename = given_config_file; } diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index 43ea283242..c81ccf2e56 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -398,6 +398,17 @@ test_expect_success 'alternative GIT_CONFIG' 'cmp output expect' test_expect_success 'alternative GIT_CONFIG (--file)' \ '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 cat > expect << EOF |