提交 5d3dd915 编写于 作者: N Nguyễn Thái Ngọc Duy 提交者: Junio C Hamano

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: NNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 cf9d52e4
......@@ -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 &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册