提交 b3569933 编写于 作者: J Junio C Hamano

Merge branch 'po/help-guides'

"git help" learned "-g" option to show the list of guides just like
list of commands are given with "-a".

* po/help-guides:
  doc: include --guide option description for "git help"
  help: mention -a and -g option, and 'git help <concept>' usage.
  builtin/help.c: add list_common_guides_help() function
  builtin/help.c: add --guide option
  builtin/help.c: split "-a" processing into two
......@@ -8,31 +8,45 @@ git-help - Display help information about Git
SYNOPSIS
--------
[verse]
'git help' [-a|--all|-i|--info|-m|--man|-w|--web] [COMMAND]
'git help' [-a|--all] [-g|--guide]
[-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]
DESCRIPTION
-----------
With no options and no COMMAND given, the synopsis of the 'git'
With no options and no COMMAND or GUIDE given, the synopsis of the 'git'
command and a list of the most commonly used Git commands are printed
on the standard output.
If the option '--all' or '-a' is given, then all available commands are
If the option '--all' or '-a' is given, all available commands are
printed on the standard output.
If a Git subcommand is named, a manual page for that subcommand is brought
up. The 'man' program is used by default for this purpose, but this
can be overridden by other options or configuration variables.
If the option '--guide' or '-g' is given, a list of the useful
Git guides is also printed on the standard output.
If a command, or a guide, is given, a manual page for that command or
guide is brought up. The 'man' program is used by default for this
purpose, but this can be overridden by other options or configuration
variables.
Note that `git --help ...` is identical to `git help ...` because the
former is internally converted into the latter.
To display the linkgit:git[1] man page, use `git help git`.
This page can be displayed with 'git help help' or `git help --help`
OPTIONS
-------
-a::
--all::
Prints all the available commands on the standard output. This
option supersedes any other option.
option overrides any given command or guide name.
-g::
--guides::
Prints a list of useful guides on the standard output. This
option overrides any given command or guide name.
-i::
--info::
......
......@@ -36,10 +36,12 @@ enum help_format {
static const char *html_path;
static int show_all = 0;
static int show_guides = 0;
static unsigned int colopts;
static enum help_format help_format = HELP_FORMAT_NONE;
static struct option builtin_help_options[] = {
OPT_BOOLEAN('a', "all", &show_all, N_("print all available commands")),
OPT_BOOL('a', "all", &show_all, N_("print all available commands")),
OPT_BOOL('g', "guides", &show_guides, N_("print list of useful 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"),
HELP_FORMAT_WEB),
......@@ -49,7 +51,7 @@ static struct option builtin_help_options[] = {
};
static const char * const builtin_help_usage[] = {
N_("git help [--all] [--man|--web|--info] [command]"),
N_("git help [--all] [--guides] [--man|--web|--info] [command]"),
NULL
};
......@@ -413,6 +415,37 @@ static void show_html_page(const char *git_cmd)
open_html(page_path.buf);
}
static struct {
const char *name;
const char *help;
} common_guides[] = {
{ "attributes", "Defining attributes per path" },
{ "glossary", "A Git glossary" },
{ "ignore", "Specifies intentionally untracked files to ignore" },
{ "modules", "Defining submodule properties" },
{ "revisions", "Specifying revisions and ranges for Git" },
{ "tutorial", "A tutorial introduction to Git (for version 1.5.1 or newer)" },
{ "workflows", "An overview of recommended workflows with Git"},
};
static void list_common_guides_help(void)
{
int i, longest = 0;
for (i = 0; i < ARRAY_SIZE(common_guides); i++) {
if (longest < strlen(common_guides[i].name))
longest = strlen(common_guides[i].name);
}
puts(_("The common Git guides are:\n"));
for (i = 0; i < ARRAY_SIZE(common_guides); i++) {
printf(" %s ", common_guides[i].name);
mput_char(' ', longest - strlen(common_guides[i].name));
puts(_(common_guides[i].help));
}
putchar('\n');
}
int cmd_help(int argc, const char **argv, const char *prefix)
{
int nongit;
......@@ -428,7 +461,16 @@ int cmd_help(int argc, const char **argv, const char *prefix)
git_config(git_help_config, NULL);
printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
list_commands(colopts, &main_cmds, &other_cmds);
}
if (show_guides)
list_common_guides_help();
if (show_all || show_guides) {
printf("%s\n", _(git_more_info_string));
/*
* We're done. Ignore any remaining args
*/
return 0;
}
......
......@@ -13,7 +13,9 @@ const char git_usage_string[] =
" <command> [<args>]";
const char git_more_info_string[] =
N_("See 'git help <command>' for more information on a specific command.");
N_("'git help -a' and 'git help -g' lists available subcommands and some\n"
"concept guides. See 'git help <command>' or 'git help <concept>'\n"
"to read about a specific subcommand or concept.");
static struct startup_info git_startup_info;
static int use_pager = -1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册