:linkattrs:
== 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 -f $site_path/etc/gerrit.config gitweb.type gitweb
  git config -f $site_path/etc/gerrit.config gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi
  git config -f $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 -f $site_path/etc/gerrit.config gitweb.type gitweb
  git config -f $site_path/etc/gerrit.config gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi
  git config -f $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,role=external,window=_blank]

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,role=external,window=_blank] 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",role=external,window=_blank] 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,role=external,window=_blank]. 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[role=external,window=_blank]

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 gitweb.type gitweb
  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,role=external,window=_blank]

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

SEARCHBOX
---------
