Skip to content

Commit

Permalink
git-help: add "help.format" config variable.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Christian Couder authored and Junio C Hamano committed Dec 15, 2007
1 parent dfaf75b commit 70087cd
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 12 deletions.
37 changes: 35 additions & 2 deletions Documentation/git-help.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
-----------
Expand All @@ -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.
Expand All @@ -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.
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions git-browse-help.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down Expand Up @@ -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
Expand Down
7 changes: 1 addition & 6 deletions git-sh-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down
64 changes: 62 additions & 2 deletions help.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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;
}

0 comments on commit 70087cd

Please sign in to comment.