Browse Source

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>
maint
Christian Couder 17 years ago committed by Junio C Hamano
parent
commit
70087cdbd3
  1. 37
      Documentation/git-help.txt
  2. 4
      git-browse-help.sh
  3. 7
      git-sh-setup.sh
  4. 64
      help.c

37
Documentation/git-help.txt

@ -7,7 +7,7 @@ git-help - display help information about git @@ -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. @@ -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 @@ -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. @@ -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

4
git-browse-help.sh

@ -39,7 +39,7 @@ valid_tool() { @@ -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 @@ -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

7
git-sh-setup.sh

@ -124,13 +124,8 @@ get_author_ident_from_commit () { @@ -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

@ -8,6 +8,44 @@ @@ -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) @@ -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…
Cancel
Save