summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/git-help.txt1
-rw-r--r--builtin/help.c31
-rwxr-xr-xt/t0012-help.sh3
3 files changed, 25 insertions, 10 deletions
diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt
index cb8e3d4da9..96d5f598b4 100644
--- a/Documentation/git-help.txt
+++ b/Documentation/git-help.txt
@@ -11,6 +11,7 @@ SYNOPSIS
'git help' [-a|--all [--[no-]verbose]]
[[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE]
'git help' [-g|--guides]
+'git help' [-c|--config]
DESCRIPTION
-----------
diff --git a/builtin/help.c b/builtin/help.c
index 51b18c291d..d0c9605dbb 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -62,6 +62,7 @@ static const char * const builtin_help_usage[] = {
N_("git help [-a|--all] [--[no-]verbose]]\n"
" [[-i|--info] [-m|--man] [-w|--web]] [<command>]"),
N_("git help [-g|--guides]"),
+ N_("git help [-c|--config]"),
NULL
};
@@ -553,9 +554,21 @@ int cmd_help(int argc, const char **argv, const char *prefix)
builtin_help_usage, 0);
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 */
+ 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)
- 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);
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);
}
+ if (show_guides)
+ list_guides_help();
+
+ if (show_all || show_guides) {
+ printf("%s\n", _(git_more_info_string));
+ return 0;
+ }
+
if (show_config) {
int for_human = show_config == 1;
@@ -583,14 +604,6 @@ int cmd_help(int argc, const char **argv, const char *prefix)
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]) {
printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
list_common_cmds_help();
diff --git a/t/t0012-help.sh b/t/t0012-help.sh
index 63c4adb99b..b4ed6229ed 100755
--- a/t/t0012-help.sh
+++ b/t/t0012-help.sh
@@ -35,7 +35,8 @@ test_expect_success 'basic help commands' '
'
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" '