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-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
|
||||
------
|
||||
|
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-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
|
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);
|
||||
}
|
||||
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user