diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2007-12-15 05:57:28 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-14 21:58:35 -0800 |
commit | 70087cdbd3671f5929689a9b77f414b8297641c2 (patch) | |
tree | 4c49563792e479574b67fdde3a8e2e07772d7c77 | |
parent | dfaf75b4698833d820e77e9f42ef93f3b6d3669d (diff) | |
download | git-70087cdbd3671f5929689a9b77f414b8297641c2.tar.gz git-70087cdbd3671f5929689a9b77f414b8297641c2.tar.xz |
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>
-rw-r--r-- | Documentation/git-help.txt | 37 | ||||
-rwxr-xr-x | git-browse-help.sh | 4 | ||||
-rwxr-xr-x | git-sh-setup.sh | 7 | ||||
-rw-r--r-- | help.c | 64 |
4 files changed, 100 insertions, 12 deletions
diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt index ac9e15d77..31ec403a7 100644 --- a/Documentation/git-help.txt +++ b/Documentation/git-help.txt @@ -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 diff --git a/git-browse-help.sh b/git-browse-help.sh index b465911c9..10b0a36a3 100755 --- a/git-browse-help.sh +++ b/git-browse-help.sh @@ -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 diff --git a/git-sh-setup.sh b/git-sh-setup.sh index b366761b9..270d55929 100755 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -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} @@ -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; } |