git-help: add "help.format" config variable.
This config variable makes it possible to choose the default format used to display help. This format will be used only if no option like -a|--all|-i|--info|-m|--man|-w|--web is passed to "git-help". The following values are possible for this variable: - "man" --> "man" program is used - "info" --> "info" program is used - "web" --> "git-browse-help" is used By default we still show help using "man". This patch also adds -m|--man command line option to use "man" to allow overriding the "help.format" configuration variable. Note that this patch also revert some recent changes in "git-browse-help" because they prevented to look for config variables in the global configuration file. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
dfaf75b469
commit
70087cdbd3
@ -7,7 +7,7 @@ git-help - display help information about git
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git help' [-a|--all|-i|--info|-w|--web] [COMMAND]
|
||||
'git help' [-a|--all|-i|--info|-m|--man|-w|--web] [COMMAND]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -21,7 +21,7 @@ printed on the standard output.
|
||||
|
||||
If a git command is named, a manual page for that command is brought
|
||||
up. The 'man' program is used by default for this purpose, but this
|
||||
can be overriden by other options.
|
||||
can be overriden by other options or configuration variables.
|
||||
|
||||
Note that 'git --help ...' is identical as 'git help ...' because the
|
||||
former is internally converted into the latter.
|
||||
@ -36,6 +36,11 @@ OPTIONS
|
||||
Use the 'info' program to display the manual page, instead of
|
||||
the 'man' program that is used by default.
|
||||
|
||||
-m|--man::
|
||||
Use the 'man' program to display the manual page. This may be
|
||||
used to override a value set in the 'help.format'
|
||||
configuration variable.
|
||||
|
||||
-w|--web::
|
||||
Use a web browser to display the HTML manual page, instead of
|
||||
the 'man' program that is used by default.
|
||||
@ -54,6 +59,34 @@ is available in PATH.
|
||||
Note that the script tries, as much as possible, to display the HTML
|
||||
page in a new tab on an already opened browser.
|
||||
|
||||
CONFIGURATION VARIABLES
|
||||
-----------------------
|
||||
|
||||
If no command line option is passed, the 'help.format' configuration
|
||||
variable will be checked. The following values are supported for this
|
||||
variable; they make 'git-help' behave as their corresponding command
|
||||
line option:
|
||||
|
||||
* "man" corresponds to '-m|--man',
|
||||
* "info" corresponds to '-i|--info',
|
||||
* "web" or "html" correspond to '-w|--web',
|
||||
|
||||
The 'help.browser', 'web.browser' and 'browser.<tool>.path' will also
|
||||
be checked if the 'web' format is choosen (either by command line
|
||||
option or configuration variable). See '-w|--web' in the OPTIONS
|
||||
section above.
|
||||
|
||||
Note that these configuration variables should probably be set using
|
||||
the '--global' flag, for example like this:
|
||||
|
||||
------------------------------------------------
|
||||
$ git config --global help.format web
|
||||
$ git config --global web.browser firefox
|
||||
------------------------------------------------
|
||||
|
||||
as they are probably more user specific than repository specific.
|
||||
See gitlink:git-config[1] for more information about this.
|
||||
|
||||
Author
|
||||
------
|
||||
Written by Junio C Hamano <gitster@pobox.com> and the git-list
|
||||
|
@ -39,7 +39,7 @@ valid_tool() {
|
||||
}
|
||||
|
||||
init_browser_path() {
|
||||
test -z "$GIT_DIR" || browser_path=`git config browser.$1.path`
|
||||
browser_path=`git config browser.$1.path`
|
||||
test -z "$browser_path" && browser_path=$1
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ do
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$browser" && test -n "$GIT_DIR"
|
||||
if test -z "$browser"
|
||||
then
|
||||
for opt in "help.browser" "web.browser"
|
||||
do
|
||||
|
@ -124,13 +124,8 @@ get_author_ident_from_commit () {
|
||||
|
||||
# Make sure we are in a valid repository of a vintage we understand,
|
||||
# if we require to be in a git repository.
|
||||
if test -n "$NONGIT_OK"
|
||||
if test -z "$NONGIT_OK"
|
||||
then
|
||||
if git rev-parse --git-dir >/dev/null 2>&1
|
||||
then
|
||||
: ${GIT_DIR=.git}
|
||||
fi
|
||||
else
|
||||
if [ -z "$SUBDIRECTORY_OK" ]
|
||||
then
|
||||
: ${GIT_DIR=.git}
|
||||
|
64
help.c
64
help.c
@ -8,6 +8,44 @@
|
||||
#include "exec_cmd.h"
|
||||
#include "common-cmds.h"
|
||||
|
||||
static const char *help_default_format;
|
||||
|
||||
static enum help_format {
|
||||
man_format,
|
||||
info_format,
|
||||
web_format,
|
||||
} help_format = man_format;
|
||||
|
||||
static void parse_help_format(const char *format)
|
||||
{
|
||||
if (!format) {
|
||||
help_format = man_format;
|
||||
return;
|
||||
}
|
||||
if (!strcmp(format, "man")) {
|
||||
help_format = man_format;
|
||||
return;
|
||||
}
|
||||
if (!strcmp(format, "info")) {
|
||||
help_format = info_format;
|
||||
return;
|
||||
}
|
||||
if (!strcmp(format, "web") || !strcmp(format, "html")) {
|
||||
help_format = web_format;
|
||||
return;
|
||||
}
|
||||
die("unrecognized help format '%s'", format);
|
||||
}
|
||||
|
||||
static int git_help_config(const char *var, const char *value)
|
||||
{
|
||||
if (!strcmp(var, "help.format")) {
|
||||
help_default_format = xstrdup(value);
|
||||
return 0;
|
||||
}
|
||||
return git_default_config(var, value);
|
||||
}
|
||||
|
||||
/* most GUI terminals set COLUMNS (although some don't export it) */
|
||||
static int term_columns(void)
|
||||
{
|
||||
@ -331,8 +369,30 @@ int cmd_help(int argc, const char **argv, const char *prefix)
|
||||
show_info_page(argc > 2 ? argv[2] : NULL);
|
||||
}
|
||||
|
||||
else
|
||||
show_man_page(help_cmd);
|
||||
else if (!strcmp(help_cmd, "--man") || !strcmp(help_cmd, "-m")) {
|
||||
show_man_page(argc > 2 ? argv[2] : NULL);
|
||||
}
|
||||
|
||||
else {
|
||||
int nongit;
|
||||
|
||||
setup_git_directory_gently(&nongit);
|
||||
git_config(git_help_config);
|
||||
if (help_default_format)
|
||||
parse_help_format(help_default_format);
|
||||
|
||||
switch (help_format) {
|
||||
case man_format:
|
||||
show_man_page(help_cmd);
|
||||
break;
|
||||
case info_format:
|
||||
show_info_page(help_cmd);
|
||||
break;
|
||||
case web_format:
|
||||
show_html_page(help_cmd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user