Merge branch 'mk/repo-help-strings' into next

"git repo info -h" and "git repo structure -h" limit their help output
to the part that is specific to the subcommand.

* mk/repo-help-strings:
  repo: show subcommand-specific help text
  repo: factor repo usage strings into shared macros
next
Junio C Hamano 2026-03-26 11:18:52 -07:00
commit a4c755ddde
3 changed files with 34 additions and 6 deletions

View File

@ -20,11 +20,27 @@
#include "tree-walk.h"
#include "utf8.h"

#define REPO_INFO_USAGE \
"git repo info [--format=(lines|nul) | -z] [--all | <key>...]", \
"git repo info --keys [--format=(lines|nul) | -z]"

#define REPO_STRUCTURE_USAGE \
"git repo structure [--format=(table|lines|nul) | -z]"

static const char *const repo_usage[] = {
"git repo info [--format=(lines|nul) | -z] [--all | <key>...]",
"git repo info --keys [--format=(lines|nul) | -z]",
"git repo structure [--format=(table|lines|nul) | -z]",
NULL
REPO_INFO_USAGE,
REPO_STRUCTURE_USAGE,
NULL,
};

static const char *const repo_info_usage[] = {
REPO_INFO_USAGE,
NULL,
};

static const char *const repo_structure_usage[] = {
REPO_STRUCTURE_USAGE,
NULL,
};

typedef int get_value_fn(struct repository *repo, struct strbuf *buf);
@ -214,7 +230,7 @@ static int cmd_repo_info(int argc, const char **argv, const char *prefix,
OPT_END()
};

argc = parse_options(argc, argv, prefix, options, repo_usage, 0);
argc = parse_options(argc, argv, prefix, options, repo_info_usage, 0);

if (show_keys && (all_keys || argc))
die(_("--keys cannot be used with a <key> or --all"));
@ -879,7 +895,7 @@ static int cmd_repo_structure(int argc, const char **argv, const char *prefix,
OPT_END()
};

argc = parse_options(argc, argv, prefix, options, repo_usage, 0);
argc = parse_options(argc, argv, prefix, options, repo_structure_usage, 0);
if (argc)
usage(_("too many arguments"));


View File

@ -149,4 +149,10 @@ test_expect_success 'git repo info --keys uses lines as its default output forma
test_cmp expect actual
'

test_expect_success 'git repo info -h shows only repo info usage' '
test_must_fail git repo info -h >actual &&
test_grep "git repo info" actual &&
test_grep ! "git repo structure" actual
'

test_done

View File

@ -224,4 +224,10 @@ test_expect_success 'progress meter option' '
)
'

test_expect_success 'git repo structure -h shows only repo structure usage' '
test_must_fail git repo structure -h >actual &&
test_grep "git repo structure" actual &&
test_grep ! "git repo info" actual
'

test_done