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
This commit is contained in:
@ -8,31 +8,45 @@ git-help - Display help information about Git
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[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
|
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
|
command and a list of the most commonly used Git commands are printed
|
||||||
on the standard output.
|
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.
|
printed on the standard output.
|
||||||
|
|
||||||
If a Git subcommand is named, a manual page for that subcommand is brought
|
If the option '--guide' or '-g' is given, a list of the useful
|
||||||
up. The 'man' program is used by default for this purpose, but this
|
Git guides is also printed on the standard output.
|
||||||
can be overridden by other options or configuration variables.
|
|
||||||
|
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
|
Note that `git --help ...` is identical to `git help ...` because the
|
||||||
former is internally converted into the latter.
|
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
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
-a::
|
-a::
|
||||||
--all::
|
--all::
|
||||||
Prints all the available commands on the standard output. This
|
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::
|
-i::
|
||||||
--info::
|
--info::
|
||||||
|
@ -36,10 +36,12 @@ enum help_format {
|
|||||||
static const char *html_path;
|
static const char *html_path;
|
||||||
|
|
||||||
static int show_all = 0;
|
static int show_all = 0;
|
||||||
|
static int show_guides = 0;
|
||||||
static unsigned int colopts;
|
static unsigned int colopts;
|
||||||
static enum help_format help_format = HELP_FORMAT_NONE;
|
static enum help_format help_format = HELP_FORMAT_NONE;
|
||||||
static struct option builtin_help_options[] = {
|
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('m', "man", &help_format, N_("show man page"), HELP_FORMAT_MAN),
|
||||||
OPT_SET_INT('w', "web", &help_format, N_("show manual in web browser"),
|
OPT_SET_INT('w', "web", &help_format, N_("show manual in web browser"),
|
||||||
HELP_FORMAT_WEB),
|
HELP_FORMAT_WEB),
|
||||||
@ -49,7 +51,7 @@ static struct option builtin_help_options[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char * const builtin_help_usage[] = {
|
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
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -413,6 +415,37 @@ static void show_html_page(const char *git_cmd)
|
|||||||
open_html(page_path.buf);
|
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 cmd_help(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
int nongit;
|
int nongit;
|
||||||
@ -428,7 +461,16 @@ int cmd_help(int argc, const char **argv, const char *prefix)
|
|||||||
git_config(git_help_config, NULL);
|
git_config(git_help_config, NULL);
|
||||||
printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
|
printf(_("usage: %s%s"), _(git_usage_string), "\n\n");
|
||||||
list_commands(colopts, &main_cmds, &other_cmds);
|
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));
|
printf("%s\n", _(git_more_info_string));
|
||||||
|
/*
|
||||||
|
* We're done. Ignore any remaining args
|
||||||
|
*/
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
git.c
4
git.c
@ -13,7 +13,9 @@ const char git_usage_string[] =
|
|||||||
" <command> [<args>]";
|
" <command> [<args>]";
|
||||||
|
|
||||||
const char git_more_info_string[] =
|
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 struct startup_info git_startup_info;
|
||||||
static int use_pager = -1;
|
static int use_pager = -1;
|
||||||
|
Reference in New Issue
Block a user