help: correct logic error in combining --all and --config
Fix a bug in the --config option that's been there ever since its introduction in3ac68a93fd
(help: add --config to list all available config, 2018-05-26). Die when --all and --config are combined, combining them doesn't make sense. The code for the --config option when combined with an earlier refactoring done to support the --guide option in65f98358c0
(builtin/help.c: add --guide option, 2013-04-02) would cause us to take the "--all" branch early and ignore the --config option. Let's instead list these as incompatible, both in the synopsis and help output, and enforce it in the code itself. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ff76fc841f
commit
1ed4bef6b4
@ -11,6 +11,7 @@ SYNOPSIS
|
|||||||
'git help' [-a|--all [--[no-]verbose]]
|
'git help' [-a|--all [--[no-]verbose]]
|
||||||
[[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE]
|
[[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE]
|
||||||
'git help' [-g|--guides]
|
'git help' [-g|--guides]
|
||||||
|
'git help' [-c|--config]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -62,6 +62,7 @@ static const char * const builtin_help_usage[] = {
|
|||||||
N_("git help [-a|--all] [--[no-]verbose]]\n"
|
N_("git help [-a|--all] [--[no-]verbose]]\n"
|
||||||
" [[-i|--info] [-m|--man] [-w|--web]] [<command>]"),
|
" [[-i|--info] [-m|--man] [-w|--web]] [<command>]"),
|
||||||
N_("git help [-g|--guides]"),
|
N_("git help [-g|--guides]"),
|
||||||
|
N_("git help [-c|--config]"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -553,9 +554,21 @@ int cmd_help(int argc, const char **argv, const char *prefix)
|
|||||||
builtin_help_usage, 0);
|
builtin_help_usage, 0);
|
||||||
parsed_help_format = help_format;
|
parsed_help_format = help_format;
|
||||||
|
|
||||||
|
/* Incompatible options */
|
||||||
|
if (show_all && show_config)
|
||||||
|
usage_msg_opt(_("--config and --all cannot be combined"),
|
||||||
|
builtin_help_usage, builtin_help_options);
|
||||||
|
|
||||||
|
if (show_config && show_guides)
|
||||||
|
usage_msg_opt(_("--config and --guides cannot be combined"),
|
||||||
|
builtin_help_usage, builtin_help_options);
|
||||||
|
|
||||||
/* Options that take no further arguments */
|
/* Options that take no further arguments */
|
||||||
|
if (argc && show_config)
|
||||||
|
usage_msg_opt(_("--config cannot be combined with command or guide names"),
|
||||||
|
builtin_help_usage, builtin_help_options);
|
||||||
if (argc && show_guides)
|
if (argc && show_guides)
|
||||||
usage_msg_opt(_("--guides cannot be combined with other options"),
|
usage_msg_opt(_("--guides cannot be combined with command or guide names"),
|
||||||
builtin_help_usage, builtin_help_options);
|
builtin_help_usage, builtin_help_options);
|
||||||
|
|
||||||
if (show_all) {
|
if (show_all) {
|
||||||
@ -570,6 +583,14 @@ int cmd_help(int argc, const char **argv, const char *prefix)
|
|||||||
list_commands(colopts, &main_cmds, &other_cmds);
|
list_commands(colopts, &main_cmds, &other_cmds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (show_guides)
|
||||||
|
list_guides_help();
|
||||||
|
|
||||||
|
if (show_all || show_guides) {
|
||||||
|
printf("%s\n", _(git_more_info_string));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (show_config) {
|
if (show_config) {
|
||||||
int for_human = show_config == 1;
|
int for_human = show_config == 1;
|
||||||
|
|
||||||
@ -583,14 +604,6 @@ int cmd_help(int argc, const char **argv, const char *prefix)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (show_guides)
|
|
||||||
list_guides_help();
|
|
||||||
|
|
||||||
if (show_all || show_guides) {
|
|
||||||
printf("%s\n", _(git_more_info_string));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!argv[0]) {
|
if (!argv[0]) {
|
||||||
printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
|
printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
|
||||||
list_common_cmds_help();
|
list_common_cmds_help();
|
||||||
|
@ -35,7 +35,8 @@ test_expect_success 'basic help commands' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'invalid usage' '
|
test_expect_success 'invalid usage' '
|
||||||
test_expect_code 129 git help -g add
|
test_expect_code 129 git help -g add &&
|
||||||
|
test_expect_code 129 git help -a -c
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "works for commands and guides by default" '
|
test_expect_success "works for commands and guides by default" '
|
||||||
|
Loading…
Reference in New Issue
Block a user