== Gitweb Integration

Gerrit Code Review can manage and generate hyperlinks to gitweb,
allowing users to jump from Gerrit content to the same information,
but shown by gitweb.

=== Internal/Managed gitweb

In the internal configuration, Gerrit inspects the request, enforces
its project level access controls, and directly executes `gitweb.cgi`
if the user is authorized to view the page.

To enable the internal configuration, set
link:config-gerrit.html#gitweb.cgi[gitweb.cgi] with the path of the
installed CGI.  This defaults to `/usr/lib/cgi-bin/gitweb.cgi`,
which is a common installation path for the 'gitweb' package on
Linux distributions.

----
  git config --file $site_path/etc/gerrit.config gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi
  git config --file $site_path/etc/gerrit.config --unset gitweb.url
----

Alternatively, if Gerrit is served behind reverse proxy, it can
generate different URLs for gitweb's links (they need to be
rewritten to `<gerrit>/gitweb?args` on the web server). This allows
for serving gitweb under a different URL than the Gerrit instance.
To enable this feature, set both: `gitweb.cgi` and `gitweb.url`.

----
  git config --file $site_path/etc/gerrit.config gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi
  git config --file $site_path/etc/gerrit.config gitweb.url /pretty/path/to/gitweb
----

After updating `'$site_path'/etc/gerrit.config`, the Gerrit server must
be restarted and clients must reload the host page to see the change.

==== Configuration

Most of the gitweb configuration file is handled automatically
by Gerrit Code Review.  Site specific overrides can be placed in
`'$site_path'/etc/gitweb_config.perl`, as this file is loaded as
part of the generated configuration file.

==== Logo and CSS

If the package-manager installed CGI (`/usr/lib/cgi-bin/gitweb.cgi`)
is being used, the stock CSS and logo files will be served from
either `/usr/share/gitweb` or `/var/www`.

Otherwise, Gerrit expects `gitweb.css` and `git-logo.png` to be found
in the same directory as the CGI script itself.  This matches with
the default source code distribution, and most custom installations.

==== Access Control

Access controls for internally managed gitweb page views are enforced
using the standard project READ +1 permission.

Also, in order for a user to be able to view any gitweb information for a
project, the user must be able to read all references (including
refs/meta/config, refs/meta/dashboards/*, etc.). If you have exclusive read
permissions for any references, make sure to include all parties that should be
able to read the gitweb info for any of the branches in that project.

=== External/Unmanaged gitweb

For the external configuration, gitweb runs under the control of an
external web server, and Gerrit access controls are not enforced. Gerrit
provides configuration parameters for integration with gitweb.

[[linuxGitWeb]]
==== Linux Installation

===== Install Gitweb

On Ubuntu:

----
  $ sudo apt-get install gitweb
----

With Yum:

----
  $ yum install gitweb
----

===== Configure Gitweb


Update `/etc/gitweb.conf`, add the public GIT repositories:

----
$projectroot = "/var/www/repo/";

# directory to use for temp files
$git_temp = "/tmp";

# target of the home link on top of all pages
#$home_link = $my_uri || "/";

# html text to include at home page
$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.
$projects_list = $projectroot;

# stylesheet to use
# I took off the prefix / of the following path to put these files inside gitweb directory directly
$stylesheet = "gitweb.css";

# logo to use
$logo = "git-logo.png";

# the favicon
$favicon = "git-favicon.png";
----

==== Configure & Restart Apache Web Server

===== Configure Apache


Link gitweb to `/var/www/gitweb`, check `/etc/gitweb.conf` if unsure of paths:

----
  $ sudo ln -s /usr/share/gitweb /var/www/gitweb
----

Add the gitweb directory to the Apache configuration by creating a "gitweb"
file inside the Apache conf.d directory:

----
  $ touch /etc/apache/conf.d/gitweb
----

Add the following to /etc/apache/conf.d/gitweb:

----
Alias /gitweb /var/www/gitweb

Options Indexes FollowSymlinks ExecCGI
DirectoryIndex /cgi-bin/gitweb.cgi
AllowOverride None
----

[NOTE]
This may have already been added by yum/apt-get. If that's the case, leave as
is.

===== Restart the Apache Web Server

----
  $ sudo /etc/init.d/apache2 restart
----

Now you should be able to view your repository projects online:

link:http://localhost/gitweb[http://localhost/gitweb]

[[WindowsGitWeb]]
==== Windows Installation

Instructions are available for installing the gitweb module distributed with
MsysGit:

link:https://github.com/msysgit/msysgit/wiki/GitWeb[GitWeb]

If you don't have Apache installed, you can download the appropriate build for
Windows from link:http://www.apachelounge.com/download[apachelounge.org].

After you have installed Apache, you will want to create a link:http://httpd.apache.org/docs/2.0/platform/windows.html#winsvc[new service user
account] to use with Apache.

If you're still having difficulty setting up permissions, you may find this
tech note useful for configuring Apache Service to run under another account.
You must grant the new account link:http://technet.microsoft.com/en-us/library/cc794944(WS.10).aspx["run as service"] permission:

The gitweb version in msysgit is missing several important and required
perl modules, including CGI.pm. The perl included with the msysgit distro 1.7.8
is broken.. The link:http://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af[unicore folder is missing along with utf8_heavy.pl and CGI.pm]. You can
verify by checking for perl modules. From an msys console, execute the
following to check:

----
$ perl -mCGI -mEncode -mFcntl -mFile::Find -mFile::Basename -e ""
----

You may encounter the following exception:

----
$ perl -mCGI -mEncode -mFcntl -mFile::Find -mFile::Basename -e ""
Can't locate CGI.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/msys
/usr/lib/p erl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/msys
/usr/lib/perl5/site_perl/5.8.8 /u sr/lib/perl5/site_perl .). BEGIN
failed--compilation aborted.
----

If you're missing CGI.pm, you'll have to deploy the module to the msys
environment: You will have to retrieve them from the 5.8.8 distro on :

http://strawberryperl.com/releases.html

File: strawberry-perl-5.8.8.3.zip

contents: `bin/` `lib/` `site/`

copy the contents of lib into `msysgit/lib/perl5/5.8.8` and overwrite existing files.

==== Enable Gitweb Integration

To enable the external gitweb integration, set
link:config-gerrit.html#gitweb.url[gitweb.url] with the URL of your
gitweb CGI.

The CGI's `$projectroot` should be the same directory as
gerrit.basePath, or a fairly current replica.  If a replica is
being used, ensure it uses a full mirror, so the `+refs/changes/*+`
namespace is available.

----
$ git config -f $site_path/etc/gerrit.config --unset gitweb.cgi
$ git config -f $site_path/etc/gerrit.config gitweb.url https://gitweb.corporation.com
----

If you're not following the traditional \{projectName\}.git project naming conventions,
you will want to customize Gerrit to read them. Add the following:

----
$ git config -f $site_path/etc/gerrit.config gitweb.type custom
$ git config -f $site_path/etc/gerrit.config gitweb.project ?p=\${project}\;a=summary
$ git config -f $site_path/etc/gerrit.config gitweb.revision ?p=\${project}\;a=commit\;h=\${commit}
$ git config -f $site_path/etc/gerrit.config gitweb.branch ?p=\${project}\;a=shortlog\;h=\${branch}
$ git config -f $site_path/etc/gerrit.config gitweb.roottree ?p=\${project}\;a=tree\;hb=\${commit}
$ git config -f $site_path/etc/gerrit.config gitweb.file ?p=\${project}\;hb=\${commit}\;f=\${file}
$ git config -f $site_path/etc/gerrit.config gitweb.filehistory ?p=\${project}\;a=history\;hb=\${branch}\;f=\${file}
----

After updating `'$site_path'/etc/gerrit.config`, the Gerrit server must
be restarted and clients must reload the host page to see the change.

Note that when using a custom gitweb configuration, values must be
specified for all of the `project`, `revision`, `branch`, `roottree`,
`file`, and `filehistory` settings, otherwise the configuration will
not be used.

===== Access Control

Gitweb access controls can be implemented using standard web server
access controls.  This isn't typically integrated with Gerrit's own
access controls.  Caution must be taken to ensure the controls are
consistent if access needs to be restricted.

===== Caching Gitweb

If your repository set is large and you are expecting a lot
of users, you may want to look at the caching forks used by
high-traffic sites like kernel.org or repo.or.cz.

=== Alternatives to gitweb
There are other alternatives to gitweb that can also be used with
Gerrit, such as cgit.

cgit can be used by specifying `gitweb.type` to be 'cgit'.

It is also possible to define custom patterns.

=== SEE ALSO

* link:config-gerrit.html#gitweb[Section gitweb]
* link:http://git.zx2c4.com/cgit/about/[cgit]

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
