Merge branch 'mk/repo-help-strings'

"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
This commit is contained in:
Junio C Hamano
2026-04-01 10:28:19 -07:00
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