提交 99073260 编写于 作者: J Junio C Hamano

Merge branch 'cc/browser'

* cc/browser:
  Documentation: add 'git-web--browse.txt' and simplify other docs.
  git-web--browse: fix misplaced quote in init_browser_path()
  web--browse: Add a few quotes in 'init_browser_path'.
  Documentation: instaweb: add 'git-web--browse' information.
  Adjust .gitignore for 5884f1(Rename 'git-help--browse.sh'...)
  git-web--browse: do not start the browser with nohup
  instaweb: use 'git-web--browse' to launch browser.
  Rename 'git-help--browse.sh' to 'git-web--browse.sh'.
  help--browse: add '--config' option to check a config option for a browser.
  help: make 'git-help--browse' usable outside 'git-help'.

Conflicts:

	git-web--browse.sh
......@@ -50,7 +50,6 @@ git-gc
git-get-tar-commit-id
git-grep
git-hash-object
git-help--browse
git-http-fetch
git-http-push
git-imap-send
......@@ -136,6 +135,7 @@ git-upload-pack
git-var
git-verify-pack
git-verify-tag
git-web--browse
git-whatchanged
git-write-tree
git-core-*/?*
......
......@@ -47,27 +47,9 @@ OPTIONS
+
The web browser can be specified using the configuration variable
'help.browser', or 'web.browser' if the former is not set. If none of
these config variables is set, the 'git-help--browse' helper script
(called by 'git-help') will pick a suitable default.
+
You can explicitly provide a full path to your preferred browser by
setting the configuration variable 'browser.<tool>.path'. For example,
you can configure the absolute path to firefox by setting
'browser.firefox.path'. Otherwise, 'git-help--browse' assumes the tool
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.
+
The following browsers are currently supported by 'git-help--browse':
+
* firefox (this is the default under X Window when not using KDE)
* iceweasel
* konqueror (this is the default under KDE)
* w3m (this is the default outside X Window)
* links
* lynx
* dillo
these config variables is set, the 'git-web--browse' helper script
(called by 'git-help') will pick a suitable default. See
linkgit:git-web--browse[1] for more information about this.
CONFIGURATION VARIABLES
-----------------------
......@@ -84,7 +66,7 @@ line option:
The 'help.browser', 'web.browser' and 'browser.<tool>.path' will also
be checked if the 'web' format is chosen (either by command line
option or configuration variable). See '-w|--web' in the OPTIONS
section above.
section above and linkgit:git-web--browse[1].
Note that these configuration variables should probably be set using
the '--global' flag, for example like this:
......
......@@ -38,10 +38,11 @@ OPTIONS
The port number to bind the httpd to. (Default: 1234)
-b|--browser::
The web browser command-line to execute to view the gitweb page.
If blank, the URL of the gitweb instance will be printed to
stdout. (Default: 'firefox')
The web browser that should be used to view the gitweb
page. This will be passed to the 'git-web--browse' helper
script along with the URL of the gitweb instance. See
linkgit:git-web--browse[1] for more information about this. If
the script fails, the URL will be printed to stdout.
--start::
Start the httpd instance and exit. This does not generate
......@@ -72,7 +73,8 @@ You may specify configuration in your .git/config
-----------------------------------------------------------------------
If the configuration variable 'instaweb.browser' is not set,
'web.browser' will be used instead if it is defined.
'web.browser' will be used instead if it is defined. See
linkgit:git-web--browse[1] for more information about this.
Author
------
......
git-web--browse(1)
==================
NAME
----
git-web--browse - git helper script to launch a web browser
SYNOPSIS
--------
'git-web--browse' [OPTIONS] URL/FILE ...
DESCRIPTION
-----------
This script tries, as much as possible, to display the URLs and FILEs
that are passed as arguments, as HTML pages in new tabs on an already
opened web browser.
The following browsers (or commands) are currently supported:
* firefox (this is the default under X Window when not using KDE)
* iceweasel
* konqueror (this is the default under KDE)
* w3m (this is the default outside graphical environments)
* links
* lynx
* dillo
* open (this is the default under Mac OS X GUI)
OPTIONS
-------
-b BROWSER|--browser=BROWSER::
Use the specified BROWSER. It must be in the list of supported
browsers.
-t BROWSER|--tool=BROWSER::
Same as above.
-c CONF.VAR|--config=CONF.VAR::
CONF.VAR is looked up in the git config files. If it's set,
then its value specify the browser that should be used.
CONFIGURATION VARIABLES
-----------------------
The web browser can be specified using a configuration variable passed
with the -c (or --config) command line option, or the 'web.browser'
configuration variable if the former is not used.
You can explicitly provide a full path to your preferred browser by
setting the configuration variable 'browser.<tool>.path'. For example,
you can configure the absolute path to firefox by setting
'browser.firefox.path'. Otherwise, 'git-web--browse' assumes the tool
is available in PATH.
Note that these configuration variables should probably be set using
the '--global' flag, for example like this:
------------------------------------------------
$ git config --global web.browser firefox
------------------------------------------------
as they are probably more user specific than repository specific.
See linkgit:git-config[1] for more information about this.
Author
------
Written by Christian Couder <chriscool@tuxfamily.org> and the git-list
<git@vger.kernel.org>, based on git-mergetool by Theodore Y. Ts'o.
Documentation
-------------
Documentation by Christian Couder <chriscool@tuxfamily.org> and the
git-list <git@vger.kernel.org>.
GIT
---
Part of the linkgit:git[7] suite
......@@ -231,7 +231,7 @@ SCRIPT_SH = \
git-lost-found.sh git-quiltimport.sh git-submodule.sh \
git-filter-branch.sh \
git-stash.sh \
git-help--browse.sh
git-web--browse.sh
SCRIPT_PERL = \
git-add--interactive.perl \
......@@ -819,6 +819,7 @@ git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)
help.o: help.c common-cmds.h GIT-CFLAGS
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \
'-DGIT_HTML_PATH="$(htmldir_SQ)"' \
'-DGIT_MAN_PATH="$(mandir_SQ)"' \
'-DGIT_INFO_PATH="$(infodir_SQ)"' $<
......@@ -839,7 +840,6 @@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
-e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
-e 's/@@NO_CURL@@/$(NO_CURL)/g' \
-e 's|@@HTMLDIR@@|$(htmldir_SQ)|g' \
$@.sh >$@+ && \
chmod +x $@+ && \
mv $@+ $@
......
......@@ -24,8 +24,6 @@ restart restart the web server
fqgitdir="$GIT_DIR"
local="`git config --bool --get instaweb.local`"
httpd="`git config --get instaweb.httpd`"
browser="`git config --get instaweb.browser`"
test -z "$browser" && browser="`git config --get web.browser`"
port=`git config --get instaweb.port`
module_path="`git config --get instaweb.modulepath`"
......@@ -36,9 +34,6 @@ conf="$GIT_DIR/gitweb/httpd.conf"
# if installed, it doesn't need further configuration (module_path)
test -z "$httpd" && httpd='lighttpd -f'
# probably the most popular browser among gitweb users
test -z "$browser" && browser='firefox'
# any untaken local port will do...
test -z "$port" && port=1234
......@@ -274,14 +269,11 @@ webrick)
;;
esac
init_browser_path() {
browser_path="`git config browser.$1.path`"
test -z "$browser_path" && browser_path="$1"
}
start_httpd
url=http://127.0.0.1:$port
test -n "$browser" && {
init_browser_path "$browser"
"$browser_path" $url
} || echo $url
if test -n "$browser"; then
git web--browse -b "$browser" $url || echo $url
else
git web--browse -c "instaweb.browser" $url || echo $url
fi
......@@ -16,18 +16,13 @@
# git maintainer.
#
USAGE='[--browser=browser|--tool=browser] [cmd to display] ...'
USAGE='[--browser=browser|--tool=browser] [--config=conf.var] url/file ...'
# This must be capable of running outside of git directory, so
# the vanilla git-sh-setup should not be used.
NONGIT_OK=Yes
. git-sh-setup
# Install data.
html_dir="@@HTMLDIR@@"
test -f "$html_dir/git.html" || die "No documentation directory found."
valid_tool() {
case "$1" in
firefox | iceweasel | konqueror | w3m | links | lynx | dillo | open)
......@@ -39,8 +34,8 @@ valid_tool() {
}
init_browser_path() {
browser_path=`git config browser.$1.path`
test -z "$browser_path" && browser_path=$1
browser_path=$(git config "browser.$1.path")
test -z "$browser_path" && browser_path="$1"
}
while test $# != 0
......@@ -58,6 +53,18 @@ do
shift ;;
esac
;;
-c|--config*)
case "$#,$1" in
*,*=*)
conf=`expr "z$1" : 'z-[^=]*=\(.*\)'`
;;
1,*)
usage ;;
*)
conf="$2"
shift ;;
esac
;;
--)
break
;;
......@@ -71,17 +78,20 @@ do
shift
done
test $# = 0 && usage
if test -z "$browser"
then
for opt in "help.browser" "web.browser"
for opt in "$conf" "web.browser"
do
test -z "$opt" && continue
browser="`git config $opt`"
test -z "$browser" || break
done
if test -n "$browser" && ! valid_tool "$browser"; then
echo >&2 "git config option $opt set to unknown browser: $browser"
echo >&2 "Resetting to default..."
unset browser
echo >&2 "git config option $opt set to unknown browser: $browser"
echo >&2 "Resetting to default..."
unset browser
fi
fi
......@@ -117,16 +127,13 @@ else
fi
fi
pages=$(for p in "$@"; do echo "$html_dir/$p.html" ; done)
test -z "$pages" && pages="$html_dir/git.html"
case "$browser" in
firefox|iceweasel)
# Check version because firefox < 2.0 does not support "-new-tab".
vers=$(expr "$($browser_path -version)" : '.* \([0-9][0-9]*\)\..*')
NEWTAB='-new-tab'
test "$vers" -lt 2 && NEWTAB=''
nohup "$browser_path" $NEWTAB $pages &
"$browser_path" $NEWTAB "$@" &
;;
konqueror)
case "$(basename "$browser_path")" in
......@@ -134,20 +141,20 @@ case "$browser" in
# It's simpler to use kfmclient to open a new tab in konqueror.
browser_path="$(echo "$browser_path" | sed -e 's/konqueror$/kfmclient/')"
type "$browser_path" > /dev/null 2>&1 || die "No '$browser_path' found."
eval "$browser_path" newTab $pages
eval "$browser_path" newTab "$@"
;;
kfmclient)
eval "$browser_path" newTab $pages
eval "$browser_path" newTab "$@"
;;
*)
nohup "$browser_path" $pages &
"$browser_path" "$@" &
;;
esac
;;
w3m|links|lynx|open)
eval "$browser_path" $pages
eval "$browser_path" "$@"
;;
dillo)
nohup "$browser_path" $pages &
"$browser_path" "$@" &
;;
esac
......@@ -330,10 +330,26 @@ static void show_info_page(const char *git_cmd)
execlp("info", "info", "gitman", page, NULL);
}
static void get_html_page_path(struct strbuf *page_path, const char *page)
{
struct stat st;
/* Check that we have a git documentation directory. */
if (stat(GIT_HTML_PATH "/git.html", &st) || !S_ISREG(st.st_mode))
die("'%s': not a documentation directory.", GIT_HTML_PATH);
strbuf_init(page_path, 0);
strbuf_addf(page_path, GIT_HTML_PATH "/%s.html", page);
}
static void show_html_page(const char *git_cmd)
{
const char *page = cmd_to_page(git_cmd);
execl_git_cmd("help--browse", page, NULL);
struct strbuf page_path; /* it leaks but we exec bellow */
get_html_page_path(&page_path, page);
execl_git_cmd("web--browse", "-c", "help.browser", page_path.buf, NULL);
}
void help_unknown_cmd(const char *cmd)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册