mbox series

[v2,0/9] help: tests, parse_options() sanity, fix "help -g" regression

Message ID cover-v2-0.9-00000000000-20220221T193708Z-avarab@gmail.com (mailing list archive)
Headers show
Series help: tests, parse_options() sanity, fix "help -g" regression | expand

Message

Ævar Arnfjörð Bjarmason Feb. 21, 2022, 7:38 p.m. UTC
A late re-roll of [1] which addresses all the comments Eric Sunshine
raised, thanks for the review, and sorry the v2 took so long!

As the range-diff shows the main change is a mid-series set of changes
to sanity check more "git help <opts>" incompaitibilities. The
SYNOPSIS issues etc. Eric noted have also been fixed.

1. https://lore.kernel.org/git/cover-0.7-00000000000-20211228T153456Z-avarab@gmail.com/

Ævar Arnfjörð Bjarmason (9):
  help doc: add missing "]" to "[-a|--all]"
  help.c: use puts() instead of printf{,_ln}() for consistency
  help tests: test "git" and "git help [-a|-g] spacing
  help.c: split up list_all_cmds_help() function
  help: note the option name on option incompatibility
  help: correct usage & behavior of "git help --all"
  help: error if [-a|-g|-c] and [-i|-m|-w] are combined
  help: add --no-[external-commands|aliases] for use with --all
  help: don't print "\n" before single-section output

 Documentation/git-help.txt | 15 ++++--
 builtin/help.c             | 63 +++++++++++++++++++++----
 help.c                     | 37 +++++++++++----
 help.h                     |  2 +-
 t/t0012-help.sh            | 94 ++++++++++++++++++++++++++++++++++++++
 5 files changed, 187 insertions(+), 24 deletions(-)

Range-diff against v1:
 1:  652dae26bf4 =  1:  c4b66c36c17 help doc: add missing "]" to "[-a|--all]"
 2:  f84662469a3 =  2:  124643c4b35 help.c: use puts() instead of printf{,_ln}() for consistency
 3:  3956937cf3b !  3:  3e39116f197 help tests: test "git" and "git help [-a|-g] spacing
    @@ t/t0012-help.sh: test_expect_success 'git help --config-sections-for-completion'
     +'
     +
      test_expect_success 'generate builtin list' '
    + 	mkdir -p sub &&
      	git --list-cmds=builtins >builtins
    - '
 4:  f040dd549b4 =  4:  f9c4d5e2d28 help.c: split up list_all_cmds_help() function
 5:  12ff152bd57 <  -:  ----------- help: error if [-a|-g|-c] and [-i|-m|-w] are combined
 -:  ----------- >  5:  e5c49089106 help: note the option name on option incompatibility
 -:  ----------- >  6:  868e8a6cf83 help: correct usage & behavior of "git help --all"
 -:  ----------- >  7:  992ee6580ac help: error if [-a|-g|-c] and [-i|-m|-w] are combined
 6:  a5ef9f69530 !  8:  c81c0cbbcdb help: add --no-[external-commands|aliases] for use with --all
    @@ Documentation/git-help.txt: git-help - Display help information about Git
      --------
      [verse]
     -'git help' [-a|--all] [--[no-]verbose]
    -+'git help' [-a|--all] [--[no-]verbose] [--[no-](external-commands|aliases)]
    ++'git help' [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
      'git help' [[-i|--info] [-m|--man] [-w|--web]] [<command>|<guide>]
      'git help' [-g|--guides]
      'git help' [-c|--config]
     @@ Documentation/git-help.txt: OPTIONS
    - 	Prints all the available commands on the standard output. This
    - 	option overrides any given command or guide name.
    + --all::
    + 	Prints all the available commands on the standard output.
      
     +--no-external-commands::
     +	When used with `--all`, exclude the listing of external "git-*"
    @@ builtin/help.c: static const char *html_path;
      	OPT_CMDMODE('a', "all", &cmd_mode, N_("print all available commands"),
      		    HELP_ACTION_ALL),
     +	OPT_BOOL(0, "external-commands", &show_external_commands,
    -+		 N_("show external commands in --all?")),
    -+	OPT_BOOL(0, "aliases", &show_aliases, N_("show aliases in --all?")),
    ++		 N_("show external commands in --all")),
    ++	OPT_BOOL(0, "aliases", &show_aliases, N_("show aliases in --all")),
      	OPT_HIDDEN_BOOL(0, "exclude-guides", &exclude_guides, N_("exclude guides")),
      	OPT_SET_INT('m', "man", &help_format, N_("show man page"), HELP_FORMAT_MAN),
      	OPT_SET_INT('w', "web", &help_format, N_("show manual in web browser"),
    @@ builtin/help.c: static struct option builtin_help_options[] = {
      
      static const char * const builtin_help_usage[] = {
     -	N_("git help [-a|--all] [--[no-]verbose]]"),
    -+	N_("git help [-a|--all] [--[no-]verbose]] [--[no-](external-commands|aliases)]"),
    ++	N_("git help [-a|--all] [--[no-]verbose]] [--[no-]external-commands] [--[no-]aliases]"),
      	N_("git help [[-i|--info] [-m|--man] [-w|--web]] [<command>]"),
      	N_("git help [-g|--guides]"),
      	N_("git help [-c|--config]"),
    @@ builtin/help.c: int cmd_help(int argc, const char **argv, const char *prefix)
     +
      	switch (cmd_mode) {
      	case HELP_ACTION_ALL:
    - 		no_format();
    + 		opt_mode_usage(argc, "--all", help_format);
      		if (verbose) {
      			setup_pager();
     -			list_all_cmds_help();
 7:  08fd12fe7b4 =  9:  08dc693dc3e help: don't print "\n" before single-section output