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
This commit is contained in:
commit
990732609c
2
.gitignore
vendored
2
.gitignore
vendored
@ -50,7 +50,6 @@ git-gc
|
|||||||
git-get-tar-commit-id
|
git-get-tar-commit-id
|
||||||
git-grep
|
git-grep
|
||||||
git-hash-object
|
git-hash-object
|
||||||
git-help--browse
|
|
||||||
git-http-fetch
|
git-http-fetch
|
||||||
git-http-push
|
git-http-push
|
||||||
git-imap-send
|
git-imap-send
|
||||||
@ -136,6 +135,7 @@ git-upload-pack
|
|||||||
git-var
|
git-var
|
||||||
git-verify-pack
|
git-verify-pack
|
||||||
git-verify-tag
|
git-verify-tag
|
||||||
|
git-web--browse
|
||||||
git-whatchanged
|
git-whatchanged
|
||||||
git-write-tree
|
git-write-tree
|
||||||
git-core-*/?*
|
git-core-*/?*
|
||||||
|
@ -47,27 +47,9 @@ OPTIONS
|
|||||||
+
|
+
|
||||||
The web browser can be specified using the configuration variable
|
The web browser can be specified using the configuration variable
|
||||||
'help.browser', or 'web.browser' if the former is not set. If none of
|
'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
|
these config variables is set, the 'git-web--browse' helper script
|
||||||
(called by 'git-help') will pick a suitable default.
|
(called by 'git-help') will pick a suitable default. See
|
||||||
+
|
linkgit:git-web--browse[1] for more information about this.
|
||||||
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
|
|
||||||
|
|
||||||
CONFIGURATION VARIABLES
|
CONFIGURATION VARIABLES
|
||||||
-----------------------
|
-----------------------
|
||||||
@ -84,7 +66,7 @@ line option:
|
|||||||
The 'help.browser', 'web.browser' and 'browser.<tool>.path' will also
|
The 'help.browser', 'web.browser' and 'browser.<tool>.path' will also
|
||||||
be checked if the 'web' format is chosen (either by command line
|
be checked if the 'web' format is chosen (either by command line
|
||||||
option or configuration variable). See '-w|--web' in the OPTIONS
|
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
|
Note that these configuration variables should probably be set using
|
||||||
the '--global' flag, for example like this:
|
the '--global' flag, for example like this:
|
||||||
|
@ -38,10 +38,11 @@ OPTIONS
|
|||||||
The port number to bind the httpd to. (Default: 1234)
|
The port number to bind the httpd to. (Default: 1234)
|
||||||
|
|
||||||
-b|--browser::
|
-b|--browser::
|
||||||
|
The web browser that should be used to view the gitweb
|
||||||
The web browser command-line to execute to view the gitweb page.
|
page. This will be passed to the 'git-web--browse' helper
|
||||||
If blank, the URL of the gitweb instance will be printed to
|
script along with the URL of the gitweb instance. See
|
||||||
stdout. (Default: 'firefox')
|
linkgit:git-web--browse[1] for more information about this. If
|
||||||
|
the script fails, the URL will be printed to stdout.
|
||||||
|
|
||||||
--start::
|
--start::
|
||||||
Start the httpd instance and exit. This does not generate
|
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,
|
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
|
Author
|
||||||
------
|
------
|
||||||
|
78
Documentation/git-web--browse.txt
Normal file
78
Documentation/git-web--browse.txt
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
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
|
4
Makefile
4
Makefile
@ -231,7 +231,7 @@ SCRIPT_SH = \
|
|||||||
git-lost-found.sh git-quiltimport.sh git-submodule.sh \
|
git-lost-found.sh git-quiltimport.sh git-submodule.sh \
|
||||||
git-filter-branch.sh \
|
git-filter-branch.sh \
|
||||||
git-stash.sh \
|
git-stash.sh \
|
||||||
git-help--browse.sh
|
git-web--browse.sh
|
||||||
|
|
||||||
SCRIPT_PERL = \
|
SCRIPT_PERL = \
|
||||||
git-add--interactive.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
|
help.o: help.c common-cmds.h GIT-CFLAGS
|
||||||
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \
|
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \
|
||||||
|
'-DGIT_HTML_PATH="$(htmldir_SQ)"' \
|
||||||
'-DGIT_MAN_PATH="$(mandir_SQ)"' \
|
'-DGIT_MAN_PATH="$(mandir_SQ)"' \
|
||||||
'-DGIT_INFO_PATH="$(infodir_SQ)"' $<
|
'-DGIT_INFO_PATH="$(infodir_SQ)"' $<
|
||||||
|
|
||||||
@ -839,7 +840,6 @@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
|
|||||||
-e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
|
-e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
|
||||||
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
|
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
|
||||||
-e 's/@@NO_CURL@@/$(NO_CURL)/g' \
|
-e 's/@@NO_CURL@@/$(NO_CURL)/g' \
|
||||||
-e 's|@@HTMLDIR@@|$(htmldir_SQ)|g' \
|
|
||||||
$@.sh >$@+ && \
|
$@.sh >$@+ && \
|
||||||
chmod +x $@+ && \
|
chmod +x $@+ && \
|
||||||
mv $@+ $@
|
mv $@+ $@
|
||||||
|
@ -24,8 +24,6 @@ restart restart the web server
|
|||||||
fqgitdir="$GIT_DIR"
|
fqgitdir="$GIT_DIR"
|
||||||
local="`git config --bool --get instaweb.local`"
|
local="`git config --bool --get instaweb.local`"
|
||||||
httpd="`git config --get instaweb.httpd`"
|
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`
|
port=`git config --get instaweb.port`
|
||||||
module_path="`git config --get instaweb.modulepath`"
|
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)
|
# if installed, it doesn't need further configuration (module_path)
|
||||||
test -z "$httpd" && httpd='lighttpd -f'
|
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...
|
# any untaken local port will do...
|
||||||
test -z "$port" && port=1234
|
test -z "$port" && port=1234
|
||||||
|
|
||||||
@ -274,14 +269,11 @@ webrick)
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
init_browser_path() {
|
|
||||||
browser_path="`git config browser.$1.path`"
|
|
||||||
test -z "$browser_path" && browser_path="$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
start_httpd
|
start_httpd
|
||||||
url=http://127.0.0.1:$port
|
url=http://127.0.0.1:$port
|
||||||
test -n "$browser" && {
|
|
||||||
init_browser_path "$browser"
|
if test -n "$browser"; then
|
||||||
"$browser_path" $url
|
git web--browse -b "$browser" $url || echo $url
|
||||||
} || echo $url
|
else
|
||||||
|
git web--browse -c "instaweb.browser" $url || echo $url
|
||||||
|
fi
|
||||||
|
@ -16,18 +16,13 @@
|
|||||||
# git maintainer.
|
# 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
|
# This must be capable of running outside of git directory, so
|
||||||
# the vanilla git-sh-setup should not be used.
|
# the vanilla git-sh-setup should not be used.
|
||||||
NONGIT_OK=Yes
|
NONGIT_OK=Yes
|
||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
|
|
||||||
# Install data.
|
|
||||||
html_dir="@@HTMLDIR@@"
|
|
||||||
|
|
||||||
test -f "$html_dir/git.html" || die "No documentation directory found."
|
|
||||||
|
|
||||||
valid_tool() {
|
valid_tool() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
firefox | iceweasel | konqueror | w3m | links | lynx | dillo | open)
|
firefox | iceweasel | konqueror | w3m | links | lynx | dillo | open)
|
||||||
@ -39,8 +34,8 @@ valid_tool() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init_browser_path() {
|
init_browser_path() {
|
||||||
browser_path=`git config browser.$1.path`
|
browser_path=$(git config "browser.$1.path")
|
||||||
test -z "$browser_path" && browser_path=$1
|
test -z "$browser_path" && browser_path="$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
while test $# != 0
|
while test $# != 0
|
||||||
@ -58,6 +53,18 @@ do
|
|||||||
shift ;;
|
shift ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
-c|--config*)
|
||||||
|
case "$#,$1" in
|
||||||
|
*,*=*)
|
||||||
|
conf=`expr "z$1" : 'z-[^=]*=\(.*\)'`
|
||||||
|
;;
|
||||||
|
1,*)
|
||||||
|
usage ;;
|
||||||
|
*)
|
||||||
|
conf="$2"
|
||||||
|
shift ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
--)
|
--)
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
@ -71,17 +78,20 @@ do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
test $# = 0 && usage
|
||||||
|
|
||||||
if test -z "$browser"
|
if test -z "$browser"
|
||||||
then
|
then
|
||||||
for opt in "help.browser" "web.browser"
|
for opt in "$conf" "web.browser"
|
||||||
do
|
do
|
||||||
|
test -z "$opt" && continue
|
||||||
browser="`git config $opt`"
|
browser="`git config $opt`"
|
||||||
test -z "$browser" || break
|
test -z "$browser" || break
|
||||||
done
|
done
|
||||||
if test -n "$browser" && ! valid_tool "$browser"; then
|
if test -n "$browser" && ! valid_tool "$browser"; then
|
||||||
echo >&2 "git config option $opt set to unknown browser: $browser"
|
echo >&2 "git config option $opt set to unknown browser: $browser"
|
||||||
echo >&2 "Resetting to default..."
|
echo >&2 "Resetting to default..."
|
||||||
unset browser
|
unset browser
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -117,16 +127,13 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pages=$(for p in "$@"; do echo "$html_dir/$p.html" ; done)
|
|
||||||
test -z "$pages" && pages="$html_dir/git.html"
|
|
||||||
|
|
||||||
case "$browser" in
|
case "$browser" in
|
||||||
firefox|iceweasel)
|
firefox|iceweasel)
|
||||||
# Check version because firefox < 2.0 does not support "-new-tab".
|
# Check version because firefox < 2.0 does not support "-new-tab".
|
||||||
vers=$(expr "$($browser_path -version)" : '.* \([0-9][0-9]*\)\..*')
|
vers=$(expr "$($browser_path -version)" : '.* \([0-9][0-9]*\)\..*')
|
||||||
NEWTAB='-new-tab'
|
NEWTAB='-new-tab'
|
||||||
test "$vers" -lt 2 && NEWTAB=''
|
test "$vers" -lt 2 && NEWTAB=''
|
||||||
nohup "$browser_path" $NEWTAB $pages &
|
"$browser_path" $NEWTAB "$@" &
|
||||||
;;
|
;;
|
||||||
konqueror)
|
konqueror)
|
||||||
case "$(basename "$browser_path")" in
|
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.
|
# It's simpler to use kfmclient to open a new tab in konqueror.
|
||||||
browser_path="$(echo "$browser_path" | sed -e 's/konqueror$/kfmclient/')"
|
browser_path="$(echo "$browser_path" | sed -e 's/konqueror$/kfmclient/')"
|
||||||
type "$browser_path" > /dev/null 2>&1 || die "No '$browser_path' found."
|
type "$browser_path" > /dev/null 2>&1 || die "No '$browser_path' found."
|
||||||
eval "$browser_path" newTab $pages
|
eval "$browser_path" newTab "$@"
|
||||||
;;
|
;;
|
||||||
kfmclient)
|
kfmclient)
|
||||||
eval "$browser_path" newTab $pages
|
eval "$browser_path" newTab "$@"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
nohup "$browser_path" $pages &
|
"$browser_path" "$@" &
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
w3m|links|lynx|open)
|
w3m|links|lynx|open)
|
||||||
eval "$browser_path" $pages
|
eval "$browser_path" "$@"
|
||||||
;;
|
;;
|
||||||
dillo)
|
dillo)
|
||||||
nohup "$browser_path" $pages &
|
"$browser_path" "$@" &
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
18
help.c
18
help.c
@ -330,10 +330,26 @@ static void show_info_page(const char *git_cmd)
|
|||||||
execlp("info", "info", "gitman", page, NULL);
|
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)
|
static void show_html_page(const char *git_cmd)
|
||||||
{
|
{
|
||||||
const char *page = cmd_to_page(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)
|
void help_unknown_cmd(const char *cmd)
|
||||||
|
Loading…
Reference in New Issue
Block a user