commit/status -h: show usage even with broken configuration
"git status" and "git commit" read .git/config and .gitmodules before parsing options, but there is no reason to access a repository at all when the caller just wanted to know what arguments are accepted. [jn: rewrote the log message and added test] Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
cf9d52e489
commit
5d3dd915e6
@ -1070,6 +1070,9 @@ int cmd_status(int argc, const char **argv, const char *prefix)
|
||||
OPT_END(),
|
||||
};
|
||||
|
||||
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||
usage_with_options(builtin_status_usage, builtin_status_options);
|
||||
|
||||
if (null_termination && status_format == STATUS_FORMAT_LONG)
|
||||
status_format = STATUS_FORMAT_PORCELAIN;
|
||||
|
||||
@ -1255,6 +1258,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
|
||||
int allow_fast_forward = 1;
|
||||
struct wt_status s;
|
||||
|
||||
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||
usage_with_options(builtin_commit_usage, builtin_commit_options);
|
||||
|
||||
wt_status_prepare(&s);
|
||||
git_config(git_commit_config, &s);
|
||||
in_merge = file_exists(git_path("MERGE_HEAD"));
|
||||
|
@ -7,6 +7,30 @@ test_description='git status'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'status -h in broken repository' '
|
||||
mkdir broken &&
|
||||
test_when_finished "rm -fr broken" &&
|
||||
(
|
||||
cd broken &&
|
||||
git init &&
|
||||
echo "[status] showuntrackedfiles = CORRUPT" >>.git/config &&
|
||||
test_expect_code 129 git status -h >usage 2>&1
|
||||
) &&
|
||||
grep "[Uu]sage" broken/usage
|
||||
'
|
||||
|
||||
test_expect_success 'commit -h in broken repository' '
|
||||
mkdir broken &&
|
||||
test_when_finished "rm -fr broken" &&
|
||||
(
|
||||
cd broken &&
|
||||
git init &&
|
||||
echo "[status] showuntrackedfiles = CORRUPT" >>.git/config &&
|
||||
test_expect_code 129 git commit -h >usage 2>&1
|
||||
) &&
|
||||
grep "[Uu]sage" broken/usage
|
||||
'
|
||||
|
||||
test_expect_success 'setup' '
|
||||
: >tracked &&
|
||||
: >modified &&
|
||||
|
Loading…
Reference in New Issue
Block a user