Inter-revision diff: patch 4

Comparing v2 (message) to v1 (message)

--- v2
+++ v1
@@ -1,133 +1,35 @@
-Fix a bug in the --config option that's been there ever since its
-introduction in 3ac68a93fd2 (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 in
-65f98358c0c (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.
+Instead of having two lines that call list_config_help(for_human)
+let's setup the pager and print the trailer conditionally. This makes
+it clearer at a glance how the two differ in behavior.
 
 Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
 ---
- Documentation/git-help.txt |  1 +
- builtin/help.c             | 37 +++++++++++++++++++++++++++----------
- t/t0012-help.sh            |  7 ++++++-
- 3 files changed, 34 insertions(+), 11 deletions(-)
+ builtin/help.c | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
 
-diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt
-index cb8e3d4da9e..96d5f598b4b 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 51b18c291d8..05ba2cbe380 100644
+index 0f9dc31c40f..0737b22069b 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
- };
- 
-@@ -548,18 +549,34 @@ int cmd_help(int argc, const char **argv, const char *prefix)
- 	int nongit;
- 	enum help_format parsed_help_format;
- 	const char *page;
-+	int need_config = 0;
- 
- 	argc = parse_options(argc, argv, prefix, builtin_help_options,
- 			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) {
-+	need_config = show_all || show_config;
-+	if (need_config)
- 		git_config(git_help_config, NULL);
-+
-+	if (show_all) {
- 		if (verbose) {
- 			setup_pager();
- 			list_all_cmds_help();
-@@ -570,6 +587,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;
-+	}
-+
+@@ -574,13 +574,12 @@ int cmd_help(int argc, const char **argv, const char *prefix)
  	if (show_config) {
  		int for_human = show_config == 1;
  
-@@ -583,14 +608,6 @@ int cmd_help(int argc, const char **argv, const char *prefix)
+-		if (!for_human) {
+-			list_config_help(for_human);
+-			return 0;
+-		}
+-		setup_pager();
++		if (for_human)
++			setup_pager();
+ 		list_config_help(for_human);
+-		printf("\n%s\n", _("'git help config' for more information"));
++		if (for_human)
++			printf("\n%s\n", _("'git help config' for more information"));
++
  		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 595bf81f133..cbc9b64f79f 100755
---- a/t/t0012-help.sh
-+++ b/t/t0012-help.sh
-@@ -35,7 +35,12 @@ test_expect_success 'basic help commands' '
- '
- 
- test_expect_success 'invalid usage' '
--	test_expect_code 129 git help -g git-add
-+	test_expect_code 129 git help -g git-add &&
-+	test_expect_code 129 git help -c git-add &&
-+	test_expect_code 129 git help -g git-add &&
-+
-+	test_expect_code 129 git help -a -c &&
-+	test_expect_code 129 git help -g -c
- '
- 
- test_expect_success "works for commands and guides by default" '
 -- 
-2.33.0.873.g125ff7b9940
+2.33.0.825.g2bf60429931
 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help