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, see 'Note about konqueror' below)
* w3m (this is the default outside graphical environments)
* links
* lynx
* dillo
* open (this is the default under Mac OS X GUI)
* start (this is the default under MinGW)

Custom commands may also be specified.

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
-----------------------

CONF.VAR (from -c option) and web.browser
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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.

browser.<tool>.path
~~~~~~~~~~~~~~~~~~~

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.

browser.<tool>.cmd
~~~~~~~~~~~~~~~~~~

When the browser, specified by options or configuration variables, is
not among the supported ones, then the corresponding
'browser.<tool>.cmd' configuration variable will be looked up. If this
variable exists then 'git-web--browse' will treat the specified tool
as a custom command and will use a shell eval to run the command with
the URLs passed as arguments.

Note about konqueror
--------------------

When 'konqueror' is specified by a command line option or a
configuration variable, we launch 'kfmclient' to try to open the HTML
man page on an already opened konqueror in a new tab if possible.

For consistency, we also try such a trick if 'browser.konqueror.path' is
set to something like 'A_PATH_TO/konqueror'. That means we will try to
launch 'A_PATH_TO/kfmclient' instead.

If you really want to use 'konqueror', then you can use something like
the following:

------------------------------------------------
	[web]
		browser = konq

	[browser "konq"]
		cmd = A_PATH_TO/konqueror
------------------------------------------------

Note about git-config --global
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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[1] suite
