summaryrefslogtreecommitdiffstats
path: root/gitweb.conf.html
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-10-19 11:42:09 -0700
committerJunio C Hamano <gitster@pobox.com>2011-10-19 11:42:09 -0700
commit11821ed3cc84929e22aead7e1473a145a9e3f4d2 (patch)
treec20abe3330684f3deb12a07e0a967cc02774f856 /gitweb.conf.html
parent513ff12aa0be31c6bd62cf14564a7beecf971b90 (diff)
downloadgit-htmldocs-11821ed3cc84929e22aead7e1473a145a9e3f4d2.tar.gz
Autogenerated HTML docs for v1.7.7-419-g87009
Diffstat (limited to 'gitweb.conf.html')
-rw-r--r--gitweb.conf.html1703
1 files changed, 1703 insertions, 0 deletions
diff --git a/gitweb.conf.html b/gitweb.conf.html
new file mode 100644
index 000000000..7d173d986
--- /dev/null
+++ b/gitweb.conf.html
@@ -0,0 +1,1703 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta name="generator" content="AsciiDoc 8.5.2" />
+<title>gitweb.conf(5)</title>
+<style type="text/css">
+/* Debug borders */
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
+/*
+ border: 1px solid red;
+*/
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+tt {
+ color: navy;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ font-family: sans-serif;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+
+div.sectionbody {
+ font-family: serif;
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+
+pre {
+ padding: 0;
+ margin: 0;
+}
+
+span#author {
+ color: #527bbd;
+ font-family: sans-serif;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+span#email {
+}
+span#revnumber, span#revdate, span#revremark {
+ font-family: sans-serif;
+}
+
+div#footer {
+ font-family: sans-serif;
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+div#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+div#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+div#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-family: sans-serif;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid silver;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid silver;
+ background: #f4f4f4;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #dddddd;
+ color: #777777;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > div.content {
+ white-space: pre;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-family: sans-serif;
+ font-weight: bold;
+}
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+
+@media print {
+ div#footer-badges { display: none; }
+}
+
+div#toc {
+ margin-bottom: 2.5em;
+}
+
+div#toctitle {
+ color: #527bbd;
+ font-family: sans-serif;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+/* Overrides for manpage documents */
+h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+h2 {
+ border-style: none;
+}
+div.sectionbody {
+ margin-left: 5%;
+}
+
+@media print {
+ div#toc { display: none; }
+}
+
+/* Workarounds for IE6's broken and incomplete CSS2. */
+
+div.sidebar-content {
+ background: #ffffee;
+ border: 1px solid silver;
+ padding: 0.5em;
+}
+div.sidebar-title, div.image-title {
+ color: #527bbd;
+ font-family: sans-serif;
+ font-weight: bold;
+ margin-top: 0.0em;
+ margin-bottom: 0.5em;
+}
+
+div.listingblock div.content {
+ border: 1px solid silver;
+ background: #f4f4f4;
+ padding: 0.5em;
+}
+
+div.quoteblock-attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock-content {
+ white-space: pre;
+}
+div.verseblock-attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+
+div.exampleblock-content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+/* IE6 sets dynamically generated links as visited. */
+div#toc a:visited { color: blue; }
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+window.onload = function(){asciidoc.footnotes();}
+var asciidoc = { // Namespace.
+
+/////////////////////////////////////////////////////////////////////
+// Table Of Contents generator
+/////////////////////////////////////////////////////////////////////
+
+/* Author: Mihai Bazon, September 2002
+ * http://students.infoiasi.ro/~mishoo
+ *
+ * Table Of Content generator
+ * Version: 0.4
+ *
+ * Feel free to use this script under the terms of the GNU General Public
+ * License, as long as you do not remove or alter this notice.
+ */
+
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
+
+// toclevels = 1..4.
+toc: function (toclevels) {
+
+ function getText(el) {
+ var text = "";
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
+ text += i.data;
+ else if (i.firstChild != null)
+ text += getText(i);
+ }
+ return text;
+ }
+
+ function TocEntry(el, text, toclevel) {
+ this.element = el;
+ this.text = text;
+ this.toclevel = toclevel;
+ }
+
+ function tocEntries(el, toclevels) {
+ var result = new Array;
+ var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
+ // Function that scans the DOM tree for header elements (the DOM2
+ // nodeIterator API would be a better technique but not supported by all
+ // browsers).
+ var iterate = function (el) {
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
+ var mo = re.exec(i.tagName);
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
+ }
+ iterate(i);
+ }
+ }
+ }
+ iterate(el);
+ return result;
+ }
+
+ var toc = document.getElementById("toc");
+ var entries = tocEntries(document.getElementById("content"), toclevels);
+ for (var i = 0; i < entries.length; ++i) {
+ var entry = entries[i];
+ if (entry.element.id == "")
+ entry.element.id = "_toc_" + i;
+ var a = document.createElement("a");
+ a.href = "#" + entry.element.id;
+ a.appendChild(document.createTextNode(entry.text));
+ var div = document.createElement("div");
+ div.appendChild(a);
+ div.className = "toclevel" + entry.toclevel;
+ toc.appendChild(div);
+ }
+ if (entries.length == 0)
+ toc.parentNode.removeChild(toc);
+},
+
+
+/////////////////////////////////////////////////////////////////////
+// Footnotes generator
+/////////////////////////////////////////////////////////////////////
+
+/* Based on footnote generation code from:
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
+ */
+
+footnotes: function () {
+ var cont = document.getElementById("content");
+ var noteholder = document.getElementById("footnotes");
+ var spans = cont.getElementsByTagName("span");
+ var refs = {};
+ var n = 0;
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnote") {
+ n++;
+ // Use [\s\S] in place of . so multi-line matches work.
+ // Because JavaScript has no s (dotall) regex flag.
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+ noteholder.innerHTML +=
+ "<div class='footnote' id='_footnote_" + n + "'>" +
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
+ n + "</a>. " + note + "</div>";
+ spans[i].innerHTML =
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ var id =spans[i].getAttribute("id");
+ if (id != null) refs["#"+id] = n;
+ }
+ }
+ if (n == 0)
+ noteholder.parentNode.removeChild(noteholder);
+ else {
+ // Process footnoterefs.
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnoteref") {
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
+ href = href.match(/#.*/)[0]; // Because IE return full URL.
+ n = refs[href];
+ spans[i].innerHTML =
+ "[<a href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ }
+ }
+ }
+}
+
+}
+/*]]>*/
+</script>
+</head>
+<body>
+<div id="header">
+<h1>
+gitweb.conf(5) Manual Page
+</h1>
+<h2>NAME</h2>
+<div class="sectionbody">
+<p>gitweb.conf -
+ Gitweb (git web interface) configuration file
+</p>
+</div>
+</div>
+<div id="content">
+<h2 id="_synopsis">SYNOPSIS</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>/etc/gitweb.conf, /etc/gitweb-common.conf, $GITWEBDIR/gitweb_config.perl</p></div>
+</div>
+<h2 id="_description">DESCRIPTION</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The gitweb CGI script for viewing Git repositories over the web uses a
+perl script fragment as its configuration file. You can set variables
+using "<tt>our $variable = value</tt>"; text from a "#" character until the
+end of a line is ignored. See <strong>perlsyn</strong>(1) for details.</p></div>
+<div class="paragraph"><p>An example:</p></div>
+<div class="literalblock">
+<div class="content">
+<pre><tt># gitweb configuration file for http://git.example.org
+#
+our $projectroot = "/srv/git"; # FHS recommendation
+our $site_name = 'Example.org &gt;&gt; Repos';</tt></pre>
+</div></div>
+<div class="paragraph"><p>The configuration file is used to override the default settings that
+were built into gitweb at the time the <em>gitweb.cgi</em> script was generated.</p></div>
+<div class="paragraph"><p>While one could just alter the configuration settings in the gitweb
+CGI itself, those changes would be lost upon upgrade. Configuration
+settings might also be placed into a file in the same directory as the
+CGI script with the default name <em>gitweb_config.perl</em>&#8201;&#8212;&#8201;allowing
+one to have multiple gitweb instances with different configurations by
+the use of symlinks.</p></div>
+<div class="paragraph"><p>Note that some configuration can be controlled on per-repository rather than
+gitweb-wide basis: see "Per-repository gitweb configuration" subsection on
+<a href="gitweb.html">gitweb(1)</a> manpage.</p></div>
+</div>
+<h2 id="_discussion">DISCUSSION</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Gitweb reads configuration data from the following sources in the
+following order:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+built-in values (some set during build stage),
+</p>
+</li>
+<li>
+<p>
+common system-wide configuration file (defaults to
+ <em>/etc/gitweb-common.conf</em>),
+</p>
+</li>
+<li>
+<p>
+either per-instance configuration file (defaults to <em>gitweb_config.perl</em>
+ in the same directory as the installed gitweb), or if it does not exists
+ then fallback system-wide configuration file (defaults to <em>/etc/gitweb.conf</em>).
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>Values obtained in later configuration files override values obtained earlier
+in the above sequence.</p></div>
+<div class="paragraph"><p>Locations of the common system-wide configuration file, the fallback
+system-wide configuration file and the per-instance configuration file
+are defined at compile time using build-time Makefile configuration
+variables, respectively <tt>GITWEB_CONFIG_COMMON</tt>, <tt>GITWEB_CONFIG_SYSTEM</tt>
+and <tt>GITWEB_CONFIG</tt>.</p></div>
+<div class="paragraph"><p>You can also override locations of gitweb configuration files during
+runtime by setting the following environment variables:
+<tt>GITWEB_CONFIG_COMMON</tt>, <tt>GITWEB_CONFIG_SYSTEM</tt> and <tt>GITWEB_CONFIG</tt>
+to a non-empty value.</p></div>
+<div class="paragraph"><p>The syntax of the configuration files is that of Perl, since these files are
+handled by sourcing them as fragments of Perl code (the language that
+gitweb itself is written in). Variables are typically set using the
+<tt>our</tt> qualifier (as in "<tt>our $variable = &lt;value&gt;;</tt>") to avoid syntax
+errors if a new version of gitweb no longer uses a variable and therefore
+stops declaring it.</p></div>
+<div class="paragraph"><p>You can include other configuration file using read_config_file()
+subroutine. For example, one might want to put gitweb configuration
+related to access control for viewing repositories via Gitolite (one
+of git repository management tools) in a separate file, e.g. in
+<em>/etc/gitweb-gitolite.conf</em>. To include it, put</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>read_config_file("/etc/gitweb-gitolite.conf");</tt></pre>
+</div></div>
+<div class="paragraph"><p>somewhere in gitweb configuration file used, e.g. in per-installation
+gitweb configuration file. Note that read_config_file() checks itself
+that the file it reads exists, and does nothing if it is not found.
+It also handles errors in included file.</p></div>
+<div class="paragraph"><p>The default configuration with no configuration file at all may work
+perfectly well for some installations. Still, a configuration file is
+useful for customizing or tweaking the behavior of gitweb in many ways, and
+some optional features will not be present unless explicitly enabled using
+the configurable <tt>%features</tt> variable (see also "Configuring gitweb
+features" section below).</p></div>
+</div>
+<h2 id="_configuration_variables">CONFIGURATION VARIABLES</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Some configuration variables have their default values (embedded in the CGI
+script) set during building gitweb&#8201;&#8212;&#8201;if that is the case, this fact is put
+in their description. See gitweb&#8217;s <em>INSTALL</em> file for instructions on building
+and installing gitweb.</p></div>
+<h3 id="_location_of_repositories">Location of repositories</h3><div style="clear:left"></div>
+<div class="paragraph"><p>The configuration variables described below control how gitweb finds
+git repositories, and how repositories are displayed and accessed.</p></div>
+<div class="paragraph"><p>See also "Repositories" and later subsections in <a href="gitweb.html">gitweb(1)</a> manpage.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+$projectroot
+</dt>
+<dd>
+<p>
+ Absolute filesystem path which will be prepended to project path;
+ the path to repository is <tt>$projectroot/$project</tt>. Set to
+ <tt>$GITWEB_PROJECTROOT</tt> during installation. This variable has to be
+ set correctly for gitweb to find repositories.
+</p>
+<div class="paragraph"><p>For example, if <tt>$projectroot</tt> is set to "/srv/git" by putting the following
+in gitweb config file:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>our $projectroot = "/srv/git";</tt></pre>
+</div></div>
+<div class="paragraph"><p>then</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>http://git.example.com/gitweb.cgi?p=foo/bar.git</tt></pre>
+</div></div>
+<div class="paragraph"><p>and its path_info based equivalent</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>http://git.example.com/gitweb.cgi/foo/bar.git</tt></pre>
+</div></div>
+<div class="paragraph"><p>will map to the path <em>/srv/git/foo/bar.git</em> on the filesystem.</p></div>
+</dd>
+<dt class="hdlist1">
+$projects_list
+</dt>
+<dd>
+<p>
+ Name of a plain text file listing projects, or a name of directory
+ to be scanned for projects.
+</p>
+<div class="paragraph"><p>Project list files should list one project per line, with each line
+having the following format</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>&lt;URI-encoded filesystem path to repository&gt; SP &lt;URI-encoded repository owner&gt;</tt></pre>
+</div></div>
+<div class="paragraph"><p>The default value of this variable is determined by the <tt>GITWEB_LIST</tt>
+makefile variable at installation time. If this variable is empty, gitweb
+will fall back to scanning the <tt>$projectroot</tt> directory for repositories.</p></div>
+</dd>
+<dt class="hdlist1">
+$project_maxdepth
+</dt>
+<dd>
+<p>
+ If <tt>$projects_list</tt> variable is unset, gitweb will recursively
+ scan filesystem for git repositories. The <tt>$project_maxdepth</tt>
+ is used to limit traversing depth, relative to <tt>$projectroot</tt>
+ (starting point); it means that directories which are further
+ from <tt>$projectroot</tt> than <tt>$project_maxdepth</tt> will be skipped.
+</p>
+<div class="paragraph"><p>It is purely performance optimization, originally intended for MacOS X,
+where recursive directory traversal is slow. Gitweb follows symbolic
+links, but it detects cycles, ignoring any duplicate files and directories.</p></div>
+<div class="paragraph"><p>The default value of this variable is determined by the build-time
+configuration variable <tt>GITWEB_PROJECT_MAXDEPTH</tt>, which defaults to
+2007.</p></div>
+</dd>
+<dt class="hdlist1">
+$export_ok
+</dt>
+<dd>
+<p>
+ Show repository only if this file exists (in repository). Only
+ effective if this variable evaluates to true. Can be set when
+ building gitweb by setting <tt>GITWEB_EXPORT_OK</tt>. This path is
+ relative to <tt>GIT_DIR</tt>. git-daemon[1] uses <em>git-daemon-export-ok</em>,
+ unless started with <tt>--export-all</tt>. By default this variable is
+ not set, which means that this feature is turned off.
+</p>
+</dd>
+<dt class="hdlist1">
+$export_auth_hook
+</dt>
+<dd>
+<p>
+ Function used to determine which repositories should be shown.
+ This subroutine should take one parameter, the full path to
+ a project, and if it returns true, that project will be included
+ in the projects list and can be accessed through gitweb as long
+ as it fulfills the other requirements described by $export_ok,
+ $projects_list, and $projects_maxdepth. Example:
+</p>
+<div class="listingblock">
+<div class="content">
+<pre><tt>our $export_auth_hook = sub { return -e "$_[0]/git-daemon-export-ok"; };</tt></pre>
+</div></div>
+<div class="paragraph"><p>though the above might be done by using <tt>$export_ok</tt> instead</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>our $export_ok = "git-daemon-export-ok";</tt></pre>
+</div></div>
+<div class="paragraph"><p>If not set (default), it means that this feature is disabled.</p></div>
+<div class="paragraph"><p>See also more involved example in "Controlling access to git repositories"
+subsection on <a href="gitweb.html">gitweb(1)</a> manpage.</p></div>
+</dd>
+<dt class="hdlist1">
+$strict_export
+</dt>
+<dd>
+<p>
+ Only allow viewing of repositories also shown on the overview page.
+ This for example makes <tt>$gitweb_export_ok</tt> file decide if repository is
+ available and not only if it is shown. If <tt>$gitweb_list</tt> points to
+ file with list of project, only those repositories listed would be
+ available for gitweb. Can be set during building gitweb via
+ <tt>GITWEB_STRICT_EXPORT</tt>. By default this variable is not set, which
+ means that you can directly access those repositories that are hidden
+ from projects list page (e.g. the are not listed in the $projects_list
+ file).
+</p>
+</dd>
+</dl></div>
+<h3 id="_finding_files">Finding files</h3><div style="clear:left"></div>
+<div class="paragraph"><p>The following configuration variables tell gitweb where to find files.
+The values of these variables are paths on the filesystem.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+$GIT
+</dt>
+<dd>
+<p>
+ Core git executable to use. By default set to <tt>$GIT_BINDIR/git</tt>, which
+ in turn is by default set to <tt>$(bindir)/git</tt>. If you use git installed
+ from a binary package, you should usually set this to "/usr/bin/git".
+ This can just be "git" if your web server has a sensible PATH; from
+ security point of view it is better to use absolute path to git binary.
+ If you have multiple git versions installed it can be used to choose
+ which one to use. Must be (correctly) set for gitweb to be able to
+ work.
+</p>
+</dd>
+<dt class="hdlist1">
+$mimetypes_file
+</dt>
+<dd>
+<p>
+ File to use for (filename extension based) guessing of MIME types before
+ trying <em>/etc/mime.types</em>. <strong>NOTE</strong> that this path, if relative, is taken
+ as relative to the current git repository, not to CGI script. If unset,
+ only <em>/etc/mime.types</em> is used (if present on filesystem). If no mimetypes
+ file is found, mimetype guessing based on extension of file is disabled.
+ Unset by default.
+</p>
+</dd>
+<dt class="hdlist1">
+$highlight_bin
+</dt>
+<dd>
+<p>
+ Path to the highlight executable to use (it must be the one from
+ <a href="http://www.andre-simon.de">http://www.andre-simon.de</a> due to assumptions about parameters and output).
+ By default set to <em>highlight</em>; set it to full path to highlight
+ executable if it is not installed on your web server&#8217;s PATH.
+ Note that <em>highlight</em> feature must be set for gitweb to actually
+ use syntax hightlighting.
+</p>
+<div class="paragraph"><p><strong>NOTE</strong>: if you want to add support for new file type (supported by
+"highlight" but not used by gitweb), you need to modify <tt>%highlight_ext</tt>
+or <tt>%highlight_basename</tt>, depending on whether you detect type of file
+based on extension (for example "sh") or on its basename (for example
+"Makefile"). The keys of these hashes are extension and basename,
+respectively, and value for given key is name of syntax to be passed via
+<tt>--syntax &lt;syntax&gt;</tt> to highlighter.</p></div>
+<div class="paragraph"><p>For example if repositories you are hosting use "phtml" extension for
+PHP files, and you want to have correct syntax-highlighting for those
+files, you can add the following to gitweb configuration:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>our %highlight_ext;
+$highlight_ext{'phtml'} = 'php';</tt></pre>
+</div></div>
+</dd>
+</dl></div>
+<h3 id="_links_and_their_targets">Links and their targets</h3><div style="clear:left"></div>
+<div class="paragraph"><p>The configuration variables described below configure some of gitweb links:
+their target and their look (text or image), and where to find page
+prerequisites (stylesheet, favicon, images, scripts). Usually they are left
+at their default values, with the possible exception of <tt>@stylesheets</tt>
+variable.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+@stylesheets
+</dt>
+<dd>
+<p>
+ List of URIs of stylesheets (relative to the base URI of a page). You
+ might specify more than one stylesheet, for example to use "gitweb.css"
+ as base with site specific modifications in a separate stylesheet
+ to make it easier to upgrade gitweb. For example, you can add
+ a <tt>site</tt> stylesheet by putting
+</p>
+<div class="listingblock">
+<div class="content">
+<pre><tt>push @stylesheets, "gitweb-site.css";</tt></pre>
+</div></div>
+<div class="paragraph"><p>in the gitweb config file. Those values that are relative paths are
+relative to base URI of gitweb.</p></div>
+<div class="paragraph"><p>This list should contain the URI of gitweb&#8217;s standard stylesheet. The default
+URI of gitweb stylesheet can be set at build time using the <tt>GITWEB_CSS</tt>
+makefile variable. Its default value is <em>static/gitweb.css</em>
+(or <em>static/gitweb.min.css</em> if the <tt>CSSMIN</tt> variable is defined,
+i.e. if CSS minifier is used during build).</p></div>
+<div class="paragraph"><p><strong>Note</strong>: there is also a legacy <tt>$stylesheet</tt> configuration variable, which was
+used by older gitweb. If <tt>$stylesheet</tt> variable is defined, only CSS stylesheet
+given by this variable is used by gitweb.</p></div>
+</dd>
+<dt class="hdlist1">
+$logo
+</dt>
+<dd>
+<p>
+ Points to the location where you put <em>git-logo.png</em> on your web
+ server, or to be more the generic URI of logo, 72x27 size). This image
+ is displayed in the top right corner of each gitweb page and used as
+ a logo for the Atom feed. Relative to the base URI of gitweb (as a path).
+ Can be adjusted when building gitweb using <tt>GITWEB_LOGO</tt> variable
+ By default set to <em>static/git-logo.png</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+$favicon
+</dt>
+<dd>
+<p>
+ Points to the location where you put <em>git-favicon.png</em> on your web
+ server, or to be more the generic URI of favicon, which will be served
+ as "image/png" type. Web browsers that support favicons (website icons)
+ may display them in the browser&#8217;s URL bar and next to the site name in
+ bookmarks. Relative to the base URI of gitweb. Can be adjusted at
+ build time using <tt>GITWEB_FAVICON</tt> variable.
+ By default set to <em>static/git-favicon.png</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+$javascript
+</dt>
+<dd>
+<p>
+ Points to the location where you put <em>gitweb.js</em> on your web server,
+ or to be more generic the URI of JavaScript code used by gitweb.
+ Relative to the base URI of gitweb. Can be set at build time using
+ the <tt>GITWEB_JS</tt> build-time configuration variable.
+</p>
+<div class="paragraph"><p>The default value is either <em>static/gitweb.js</em>, or <em>static/gitweb.min.js</em> if
+the <tt>JSMIN</tt> build variable was defined, i.e. if JavaScript minifier was used
+at build time. <strong>Note</strong> that this single file is generated from multiple
+individual JavaScript "modules".</p></div>
+</dd>
+<dt class="hdlist1">
+$home_link
+</dt>
+<dd>
+<p>
+ Target of the home link on the top of all pages (the first part of view
+ "breadcrumbs"). By default it is set to the absolute URI of a current page
+ (to the value of <tt>$my_uri</tt> variable, or to "/" if <tt>$my_uri</tt> is undefined
+ or is an empty string).
+</p>
+</dd>
+<dt class="hdlist1">
+$home_link_str
+</dt>
+<dd>
+<p>
+ Label for the "home link" at the top of all pages, leading to <tt>$home_link</tt>
+ (usually the main gitweb page, which contains the projects list). It is
+ used as the first component of gitweb&#8217;s "breadcrumb trail":
+ <tt>&lt;home link&gt; / &lt;project&gt; / &lt;action&gt;</tt>. Can be set at build time using
+ the <tt>GITWEB_HOME_LINK_STR</tt> variable. By default it is set to "projects",
+ as this link leads to the list of projects. Other popular choice it to
+ set it to the name of site.
+</p>
+</dd>
+<dt class="hdlist1">
+$logo_url
+</dt>
+<dt class="hdlist1">
+$logo_label
+</dt>
+<dd>
+<p>
+ URI and label (title) for the Git logo link (or your site logo,
+ if you chose to use different logo image). By default, these both
+ refer to git homepage, <a href="http://git-scm.com">http://git-scm.com</a>; in the past, they pointed
+ to git documentation at <a href="http://www.kernel.org">http://www.kernel.org</a>.
+</p>
+</dd>
+</dl></div>
+<h3 id="_changing_gitweb_8217_s_look">Changing gitweb&#8217;s look</h3><div style="clear:left"></div>
+<div class="paragraph"><p>You can adjust how pages generated by gitweb look using the variables described
+below. You can change the site name, add common headers and footers for all
+pages, and add a description of this gitweb installation on its main page
+(which is the projects list page), etc.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+$site_name
+</dt>
+<dd>
+<p>
+ Name of your site or organization, to appear in page titles. Set it
+ to something descriptive for clearer bookmarks etc. If this variable
+ is not set or is, then gitweb uses the value of the <tt>SERVER_NAME</tt>
+ CGI environment variable, setting site name to "$SERVER_NAME Git",
+ or "Untitled Git" if this variable is not set (e.g. if running gitweb
+ as standalone script).
+</p>
+<div class="paragraph"><p>Can be set using the <tt>GITWEB_SITENAME</tt> at build time. Unset by default.</p></div>
+</dd>
+<dt class="hdlist1">
+$site_header
+</dt>
+<dd>
+<p>
+ Name of a file with HTML to be included at the top of each page.
+ Relative to the directory containing the <em>gitweb.cgi</em> script.
+ Can be set using <tt>GITWEB_SITE_HEADER</tt> at build time. No default
+ value.
+</p>
+</dd>
+<dt class="hdlist1">
+$site_footer
+</dt>
+<dd>
+<p>
+ Name of a file with HTML to be included at the bottom of each page.
+ Relative to the directory containing the <em>gitweb.cgi</em> script.
+ Can be set using <tt>GITWEB_SITE_FOOTER</tt> at build time. No default
+ value.
+</p>
+</dd>
+<dt class="hdlist1">
+$home_text
+</dt>
+<dd>
+<p>
+ Name of a HTML file which, if it exists, is included on the
+ gitweb projects overview page ("projects_list" view). Relative to
+ the directory containing the gitweb.cgi script. Default value
+ can be adjusted during build time using <tt>GITWEB_HOMETEXT</tt> variable.
+ By default set to <em>indextext.html</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+$projects_list_description_width
+</dt>
+<dd>
+<p>
+ The width (in characters) of the "Description" column of the projects list.
+ Longer descriptions will be truncated (trying to cut at word boundary);
+ the full description is available in the <em>title</em> attribute (usually shown on
+ mouseover). The default is 25, which might be too small if you
+ use long project descriptions.
+</p>
+</dd>
+<dt class="hdlist1">
+$default_projects_order
+</dt>
+<dd>
+<p>
+ Default value of ordering of projects on projects list page, which
+ means the ordering used if you don&#8217;t explicitly sort projects list
+ (if there is no "o" CGI query parameter in the URL). Valid values
+ are "none" (unsorted), "project" (projects are by project name,
+ i.e. path to repository relative to <tt>$projectroot</tt>), "descr"
+ (project description), "owner", and "age" (by date of most current
+ commit).
+</p>
+<div class="paragraph"><p>Default value is "project". Unknown value means unsorted.</p></div>
+</dd>
+</dl></div>
+<h3 id="_changing_gitweb_8217_s_behavior">Changing gitweb&#8217;s behavior</h3><div style="clear:left"></div>
+<div class="paragraph"><p>These configuration variables control <em>internal</em> gitweb behavior.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+$default_blob_plain_mimetype
+</dt>
+<dd>
+<p>
+ Default mimetype for the blob_plain (raw) view, if mimetype checking
+ doesn&#8217;t result in some other type; by default "text/plain".
+ Gitweb guesses mimetype of a file to display based on extension
+ of its filename, using <tt>$mimetypes_file</tt> (if set and file exists)
+ and <em>/etc/mime.types</em> files (see <strong>mime.types</strong>(5) manpage; only
+ filename extension rules are supported by gitweb).
+</p>
+</dd>
+<dt class="hdlist1">
+$default_text_plain_charset
+</dt>
+<dd>
+<p>
+ Default charset for text files. If this is not set, the web server
+ configuration will be used. Unset by default.
+</p>
+</dd>
+<dt class="hdlist1">
+$fallback_encoding
+</dt>
+<dd>
+<p>
+ Gitweb assumes this charset when a line contains non-UTF-8 characters.
+ The fallback decoding is used without error checking, so it can be even
+ "utf-8". The value must be a valid encoding; see the <strong>Encoding::Supported</strong>(3pm)
+ man page for a list. The default is "latin1", aka. "iso-8859-1".
+</p>
+</dd>
+<dt class="hdlist1">
+@diff_opts
+</dt>
+<dd>
+<p>
+ Rename detection options for git-diff and git-diff-tree. The default is
+ ('-M'); set it to ('-C') or ('-C', '-C') to also detect copies,
+ or set it to () i.e. empty list if you don&#8217;t want to have renames
+ detection.
+</p>
+<div class="paragraph"><p><strong>Note</strong> that rename and especially copy detection can be quite
+CPU-intensive. Note also that non git tools can have problems with
+patches generated with options mentioned above, especially when they
+involve file copies ('-C') or criss-cross renames ('-B').</p></div>
+</dd>
+</dl></div>
+<h3 id="_some_optional_features_and_policies">Some optional features and policies</h3><div style="clear:left"></div>
+<div class="paragraph"><p>Most of features are configured via <tt>%feature</tt> hash; however some of extra
+gitweb features can be turned on and configured using variables described
+below. This list beside configuration variables that control how gitweb
+looks does contain variables configuring administrative side of gitweb
+(e.g. cross-site scripting prevention; admittedly this as side effect
+affects how "summary" pages look like, or load limiting).</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+@git_base_url_list
+</dt>
+<dd>
+<p>
+ List of git base URLs. These URLs are used to generate URLs
+ describing from where to fetch a project, which are shown on
+ project summary page. The full fetch URL is "<tt>$git_base_url/$project</tt>",
+ for each element of this list. You can set up multiple base URLs
+ (for example one for <tt>git://</tt> protocol, and one for <tt>http://</tt>
+ protocol).
+</p>
+<div class="paragraph"><p>Note that per repository configuration can be set in <em>$GIT_DIR/cloneurl</em>
+file, or as values of multi-value <tt>gitweb.url</tt> configuration variable in
+project config. Per-repository configuration takes precedence over value
+composed from <tt>@git_base_url_list</tt> elements and project name.</p></div>
+<div class="paragraph"><p>You can setup one single value (single entry/item in this list) at build
+time by setting the <tt>GITWEB_BASE_URL</tt> built-time configuration variable.
+By default it is set to (), i.e. an empty list. This means that gitweb
+would not try to create project URL (to fetch) from project name.</p></div>
+</dd>
+<dt class="hdlist1">
+$projects_list_group_categories
+</dt>
+<dd>
+<p>
+ Whether to enables the grouping of projects by category on the project
+ list page. The category of a project is determined by the
+ <tt>$GIT_DIR/category</tt> file or the <tt>gitweb.category</tt> variable in each
+ repository&#8217;s configuration. Disabled by default (set to 0).
+</p>
+</dd>
+<dt class="hdlist1">
+$project_list_default_category
+</dt>
+<dd>
+<p>
+ Default category for projects for which none is specified. If this is
+ set to the empty string, such projects will remain uncategorized and
+ listed at the top, above categorized projects. Used only if project
+ categories are enabled, which means if <tt>$projects_list_group_categories</tt>
+ is true. By default set to "" (empty string).
+</p>
+</dd>
+<dt class="hdlist1">
+$prevent_xss
+</dt>
+<dd>
+<p>
+ If true, some gitweb features are disabled to prevent content in
+ repositories from launching cross-site scripting (XSS) attacks. Set this
+ to true if you don&#8217;t trust the content of your repositories.
+ False by default (set to 0).
+</p>
+</dd>
+<dt class="hdlist1">
+$maxload
+</dt>
+<dd>
+<p>
+ Used to set the maximum load that we will still respond to gitweb queries.
+ If the server load exceeds this value then gitweb will return
+ "503 Service Unavailable" error. The server load is taken to be 0
+ if gitweb cannot determine its value. Currently it works only on Linux,
+ where it uses <em>/proc/loadavg</em>; the load there is the number of active
+ tasks on the system&#8201;&#8212;&#8201;processes that are actually running&#8201;&#8212;&#8201;averaged
+ over the last minute.
+</p>
+<div class="paragraph"><p>Set <tt>$maxload</tt> to undefined value (<tt>undef</tt>) to turn this feature off.
+The default value is 300.</p></div>
+</dd>
+<dt class="hdlist1">
+$per_request_config
+</dt>
+<dd>
+<p>
+ If this is set to code reference, it will be run once for each request.
+ You can set parts of configuration that change per session this way.
+ For example, one might use the following code in a gitweb configuration
+ file
+</p>
+<div class="listingblock">
+<div class="content">
+<pre><tt>our $per_request_config = sub {
+ $ENV{GL_USER} = $cgi-&gt;remote_user || "gitweb";
+};</tt></pre>
+</div></div>
+<div class="paragraph"><p>If <tt>$per_request_config</tt> is not a code reference, it is interpreted as boolean
+value. If it is true gitweb will process config files once per request,
+and if it is false gitweb will process config files only once, each time it
+is executed. True by default (set to 1).</p></div>
+<div class="paragraph"><p><strong>NOTE</strong>: <tt>$my_url</tt>, <tt>$my_uri</tt>, and <tt>$base_url</tt> are overwritten with their default
+values before every request, so if you want to change them, be sure to set
+this variable to true or a code reference effecting the desired changes.</p></div>
+<div class="paragraph"><p>This variable matters only when using persistent web environments that
+serve multiple requests using single gitweb instance, like mod_perl,
+FastCGI or Plackup.</p></div>
+</dd>
+</dl></div>
+<h3 id="_other_variables">Other variables</h3><div style="clear:left"></div>
+<div class="paragraph"><p>Usually you should not need to change (adjust) any of configuration
+variables described below; they should be automatically set by gitweb to
+correct value.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+$version
+</dt>
+<dd>
+<p>
+ Gitweb version, set automatically when creating gitweb.cgi from
+ gitweb.perl. You might want to modify it if you are running modified
+ gitweb, for example
+</p>
+<div class="listingblock">
+<div class="content">
+<pre><tt>our $version .= " with caching";</tt></pre>
+</div></div>
+<div class="paragraph"><p>if you run modified version of gitweb with caching support. This variable
+is purely informational, used e.g. in the "generator" meta header in HTML
+header.</p></div>
+</dd>
+<dt class="hdlist1">
+$my_url
+</dt>
+<dt class="hdlist1">
+$my_uri
+</dt>
+<dd>
+<p>
+ Full URL and absolute URL of the gitweb script;
+ in earlier versions of gitweb you might have need to set those
+ variables, but now there should be no need to do it. See
+ <tt>$per_request_config</tt> if you need to set them still.
+</p>
+</dd>
+<dt class="hdlist1">
+$base_url
+</dt>
+<dd>
+<p>
+ Base URL for relative URLs in pages generated by gitweb,
+ (e.g. <tt>$logo</tt>, <tt>$favicon</tt>, <tt>@stylesheets</tt> if they are relative URLs),
+ needed and used <em>&lt;base href="$base_url"&gt;</em> only for URLs with nonempty
+ PATH_INFO. Usually gitweb sets its value correctly,
+ and there is no need to set this variable, e.g. to $my_uri or "/".
+ See <tt>$per_request_config</tt> if you need to override it anyway.
+</p>
+</dd>
+</dl></div>
+</div>
+<h2 id="_configuring_gitweb_features">CONFIGURING GITWEB FEATURES</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Many gitweb features can be enabled (or disabled) and configured using the
+<tt>%feature</tt> hash. Names of gitweb features are keys of this hash.</p></div>
+<div class="paragraph"><p>Each <tt>%feature</tt> hash element is a hash reference and has the following
+structure:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>"&lt;feature_name&gt;" =&gt; {
+ "sub" =&gt; &lt;feature-sub (subroutine)&gt;,
+ "override" =&gt; &lt;allow-override (boolean)&gt;,
+ "default" =&gt; [ &lt;options&gt;... ]
+},</tt></pre>
+</div></div>
+<div class="paragraph"><p>Some features cannot be overridden per project. For those
+features the structure of appropriate <tt>%feature</tt> hash element has a simpler
+form:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>"&lt;feature_name&gt;" =&gt; {
+ "override" =&gt; 0,
+ "default" =&gt; [ &lt;options&gt;... ]
+},</tt></pre>
+</div></div>
+<div class="paragraph"><p>As one can see it lacks the 'sub' element.</p></div>
+<div class="paragraph"><p>The meaning of each part of feature configuration is described
+below:</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+default
+</dt>
+<dd>
+<p>
+ List (array reference) of feature parameters (if there are any),
+ used also to toggle (enable or disable) given feature.
+</p>
+<div class="paragraph"><p>Note that it is currently <strong>always</strong> an array reference, even if
+feature doesn&#8217;t accept any configuration parameters, and 'default'
+is used only to turn it on or off. In such case you turn feature on
+by setting this element to <tt>[1]</tt>, and torn it off by setting it to
+<tt>[0]</tt>. See also the passage about the "blame" feature in the "Examples"
+section.</p></div>
+<div class="paragraph"><p>To disable features that accept parameters (are configurable), you
+need to set this element to empty list i.e. <tt>[]</tt>.</p></div>
+</dd>
+<dt class="hdlist1">
+override
+</dt>
+<dd>
+<p>
+ If this field has a true value then the given feature is
+ overriddable, which means that it can be configured
+ (or enabled/disabled) on a per-repository basis.
+</p>
+<div class="paragraph"><p>Usually given "&lt;feature&gt;" is configurable via the <tt>gitweb.&lt;feature&gt;</tt>
+config variable in the per-repository git configuration file.</p></div>
+<div class="paragraph"><p><strong>Note</strong> that no feature is overriddable by default.</p></div>
+</dd>
+<dt class="hdlist1">
+sub
+</dt>
+<dd>
+<p>
+ Internal detail of implementation. What is important is that
+ if this field is not present then per-repository override for
+ given feature is not supported.
+</p>
+<div class="paragraph"><p>You wouldn&#8217;t need to ever change it in gitweb config file.</p></div>
+</dd>
+</dl></div>
+<h3 id="_features_in_tt_feature_tt">Features in <tt>%feature</tt></h3><div style="clear:left"></div>
+<div class="paragraph"><p>The gitweb features that are configurable via <tt>%feature</tt> hash are listed
+below. This should be a complete list, but ultimately the authoritative
+and complete list is in gitweb.cgi source code, with features described
+in the comments.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+blame
+</dt>
+<dd>
+<p>
+ Enable the "blame" and "blame_incremental" blob views, showing for
+ each line the last commit that modified it; see <a href="git-blame.html">git-blame(1)</a>.
+ This can be very CPU-intensive and is therefore disabled by default.
+</p>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.blame</tt> configuration variable (boolean).</p></div>
+</dd>
+<dt class="hdlist1">
+snapshot
+</dt>
+<dd>
+<p>
+ Enable and configure the "snapshot" action, which allows user to
+ download a compressed archive of any tree or commit, as produced
+ by <a href="git-archive.html">git-archive(1)</a> and possibly additionally compressed.
+ This can potentially generate high traffic if you have large project.
+</p>
+<div class="paragraph"><p>The value of 'default' is a list of names of snapshot formats,
+defined in <tt>%known_snapshot_formats</tt> hash, that you wish to offer.
+Supported formats include "tgz", "tbz2", "txz" (gzip/bzip2/xz
+compressed tar archive) and "zip"; please consult gitweb sources for
+a definitive list. By default only "tgz" is offered.</p></div>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.blame</tt> configuration variable, which contains
+a comma separated list of formats or "none" to disable snapshots.
+Unknown values are ignored.</p></div>
+</dd>
+<dt class="hdlist1">
+grep
+</dt>
+<dd>
+<p>
+ Enable grep search, which lists the files in currently selected
+ tree (directory) containing the given string; see <a href="git-grep.html">git-grep(1)</a>.
+ This can be potentially CPU-intensive, of course. Enabled by default.
+</p>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.grep</tt> configuration variable (boolean).</p></div>
+</dd>
+<dt class="hdlist1">
+pickaxe
+</dt>
+<dd>
+<p>
+ Enable the so called pickaxe search, which will list the commits
+ that introduced or removed a given string in a file. This can be
+ practical and quite faster alternative to "blame" action, but it is
+ still potentially CPU-intensive. Enabled by default.
+</p>
+<div class="paragraph"><p>The pickaxe search is described in <a href="git-log.html">git-log(1)</a> (the
+description of <tt>-S&lt;string&gt;</tt> option, which refers to pickaxe entry in
+<a href="gitdiffcore.html">gitdiffcore(7)</a> for more details).</p></div>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis by setting
+repository&#8217;s <tt>gitweb.pickaxe</tt> configuration variable (boolean).</p></div>
+</dd>
+<dt class="hdlist1">
+show-sizes
+</dt>
+<dd>
+<p>
+ Enable showing size of blobs (ordinary files) in a "tree" view, in a
+ separate column, similar to what <tt>ls -l</tt> does; see description of
+ <tt>-l</tt> option in <a href="git-ls-tree.html">git-ls-tree(1)</a> manpage. This costs a bit of
+ I/O. Enabled by default.
+</p>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.showsizes</tt> configuration variable (boolean).</p></div>
+</dd>
+<dt class="hdlist1">
+patches
+</dt>
+<dd>
+<p>
+ Enable and configure "patches" view, which displays list of commits in email
+ (plain text) output format; see also <a href="git-format-patch.html">git-format-patch(1)</a>.
+ The value is the maximum number of patches in a patchset generated
+ in "patches" view. Set the <em>default</em> field to a list containing single
+ item of or to an empty list to disable patch view, or to a list
+ containing a single negative number to remove any limit.
+ Default value is 16.
+</p>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.patches</tt> configuration variable (integer).</p></div>
+</dd>
+<dt class="hdlist1">
+avatar
+</dt>
+<dd>
+<p>
+ Avatar support. When this feature is enabled, views such as
+ "shortlog" or "commit" will display an avatar associated with
+ the email of each committer and author.
+</p>
+<div class="paragraph"><p>Currently available providers are <strong>"gravatar"</strong> and <strong>"picon"</strong>.
+Only one provider at a time can be selected (<em>default</em> is one element list).
+If an unknown provider is specified, the feature is disabled.
+<strong>Note</strong> that some providers might require extra Perl packages to be
+installed; see <em>gitweb/INSTALL</em> for more details.</p></div>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.avatar</tt> configuration variable.</p></div>
+<div class="paragraph"><p>See also <tt>%avatar_size</tt> with pixel sizes for icons and avatars
+("default" is used for one-line like "log" and "shortlog", "double"
+is used for two-line like "commit", "commitdiff" or "tag"). If the
+default font sizes or lineheights are changed (e.g. via adding extra
+CSS stylesheet in <tt>@stylesheets</tt>), it may be appropriate to change
+these values.</p></div>
+</dd>
+<dt class="hdlist1">
+highlight
+</dt>
+<dd>
+<p>
+ Server-side syntax highlight support in "blob" view. It requires
+ <tt>$highlight_bin</tt> program to be available (see the description of
+ this variable in the "Configuration variables" section above),
+ and therefore is disabled by default.
+</p>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.highlight</tt> configuration variable (boolean).</p></div>
+</dd>
+<dt class="hdlist1">
+remote_heads
+</dt>
+<dd>
+<p>
+ Enable displaying remote heads (remote-tracking branches) in the "heads"
+ list. In most cases the list of remote-tracking branches is an
+ unnecessary internal private detail, and this feature is therefore
+ disabled by default. <a href="git-instaweb.html">git-instaweb(1)</a>, which is usually used
+ to browse local repositories, enables and uses this feature.
+</p>
+<div class="paragraph"><p>This feature can be configured on a per-repository basis via
+repository&#8217;s <tt>gitweb.remote_heads</tt> configuration variable (boolean).</p></div>
+</dd>
+</dl></div>
+<div class="paragraph"><p>The remaining features cannot be overridden on a per project basis.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+search
+</dt>
+<dd>
+<p>
+ Enable text search, which will list the commits which match author,
+ committer or commit text to a given string; see the description of
+ <tt>--author</tt>, <tt>--committer</tt> and <tt>--grep</tt> options in <a href="git-log.html">git-log(1)</a>
+ manpage. Enabled by default.
+</p>
+<div class="paragraph"><p>Project specific override is not supported.</p></div>
+</dd>
+<dt class="hdlist1">
+forks
+</dt>
+<dd>
+<p>
+ If this feature is enabled, gitweb considers projects in
+ subdirectories of project root (basename) to be forks of existing
+ projects. For each project &#8216;$projname.git`, projects in the
+ <tt>$projname/</tt> directory and its subdirectories will not be
+ shown in the main projects list. Instead, a '+&#8217; mark is shown
+ next to <tt>$projname</tt>, which links to a "forks" view that lists all
+ the forks (all projects in <tt>$projname/</tt> subdirectory). Additionally
+ a "forks" view for a project is linked from project summary page.
+</p>
+<div class="paragraph"><p>If the project list is taken from a file (<tt>$projects_list</tt> points to a
+file), forks are only recognized if they are listed after the main project
+in that file.</p></div>
+<div class="paragraph"><p>Project specific override is not supported.</p></div>
+</dd>
+<dt class="hdlist1">
+actions
+</dt>
+<dd>
+<p>
+ Insert custom links to the action bar of all project pages. This
+ allows you to link to third-party scripts integrating into gitweb.
+</p>
+<div class="paragraph"><p>The "default" value consists of a list of triplets in the form
+&#8216;("&lt;label&gt;", "&lt;link&gt;", "&lt;position&gt;")` where "position" is the label
+after which to insert the link, "link" is a format string where <tt>%n</tt>
+expands to the project name, <tt>%f</tt> to the project path within the
+filesystem (i.e. "$projectroot/$project"), <tt>%h</tt> to the current hash
+('h&#8217; gitweb parameter) and &#8216;%b` to the current hash base
+('hb&#8217; gitweb parameter); &#8216;%%` expands to '%&#8217;.</p></div>
+<div class="paragraph"><p>For example, at the time this page was written, the <a href="http://repo.or.cz">http://repo.or.cz</a>
+git hosting site set it to the following to enable graphical log
+(using the third party tool <strong>git-browser</strong>):</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>$feature{'actions'}{'default'} =
+ [ ('graphiclog', '/git-browser/by-commit.html?r=%n', 'summary')];</tt></pre>
+</div></div>
+<div class="paragraph"><p>This adds a link titled "graphiclog" after the "summary" link, leading to
+<tt>git-browser</tt> script, passing <tt>r=&lt;project&gt;</tt> as a query parameter.</p></div>
+<div class="paragraph"><p>Project specific override is not supported.</p></div>
+</dd>
+<dt class="hdlist1">
+timed
+</dt>
+<dd>
+<p>
+ Enable displaying how much time and how many git commands it took to
+ generate and display each page in the page footer (at the bottom of
+ page). For example the footer might contain: "This page took 6.53325
+ seconds and 13 git commands to generate." Disabled by default.
+</p>
+<div class="paragraph"><p>Project specific override is not supported.</p></div>
+</dd>
+<dt class="hdlist1">
+javascript-timezone
+</dt>
+<dd>
+<p>
+ Enable and configure the ability to change a common timezone for dates
+ in gitweb output via JavaScript. Dates in gitweb output include
+ authordate and committerdate in "commit", "commitdiff" and "log"
+ views, and taggerdate in "tag" view. Enabled by default.
+</p>
+<div class="paragraph"><p>The value is a list of three values: a default timezone (for if the client
+hasn&#8217;t selected some other timezone and saved it in a cookie), a name of cookie
+where to store selected timezone, and a CSS class used to mark up
+dates for manipulation. If you want to turn this feature off, set "default"
+to empty list: <tt>[]</tt>.</p></div>
+<div class="paragraph"><p>Typical gitweb config files will only change starting (default) timezone,
+and leave other elements at their default values:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>$feature{'javascript-timezone'}{'default'}[0] = "utc";</tt></pre>
+</div></div>
+<div class="paragraph"><p>The example configuration presented here is guaranteed to be backwards
+and forward compatible.</p></div>
+<div class="paragraph"><p>Timezone values can be "local" (for local timezone that browser uses), "utc"
+(what gitweb uses when JavaScript or this feature is disabled), or numerical
+timezones in the form of "+/-HHMM", such as "+0200".</p></div>
+<div class="paragraph"><p>Project specific override is not supported.</p></div>
+</dd>
+</dl></div>
+</div>
+<h2 id="_examples">EXAMPLES</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>To enable blame, pickaxe search, and snapshot support (allowing "tar.gz" and
+"zip" snapshots), while allowing individual projects to turn them off, put
+the following in your GITWEB_CONFIG file:</p></div>
+<div class="literalblock">
+<div class="content">
+<pre><tt>$feature{'blame'}{'default'} = [1];
+$feature{'blame'}{'override'} = 1;</tt></pre>
+</div></div>
+<div class="literalblock">
+<div class="content">
+<pre><tt>$feature{'pickaxe'}{'default'} = [1];
+$feature{'pickaxe'}{'override'} = 1;</tt></pre>
+</div></div>
+<div class="literalblock">
+<div class="content">
+<pre><tt>$feature{'snapshot'}{'default'} = ['zip', 'tgz'];
+$feature{'snapshot'}{'override'} = 1;</tt></pre>
+</div></div>
+<div class="paragraph"><p>If you allow overriding for the snapshot feature, you can specify which
+snapshot formats are globally disabled. You can also add any command line
+options you want (such as setting the compression level). For instance, you
+can disable Zip compressed snapshots and set <strong>gzip</strong>(1) to run at level 6 by
+adding the following lines to your gitweb configuration file:</p></div>
+<div class="literalblock">
+<div class="content">
+<pre><tt>$known_snapshot_formats{'zip'}{'disabled'} = 1;
+$known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6'];</tt></pre>
+</div></div>
+</div>
+<h2 id="_environment">ENVIRONMENT</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The location of per-instance and system-wide configuration files can be
+overridden using the following environment variables:</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+GITWEB_CONFIG
+</dt>
+<dd>
+<p>
+ Sets location of per-instance configuration file.
+</p>
+</dd>
+<dt class="hdlist1">
+GITWEB_CONFIG_SYSTEM
+</dt>
+<dd>
+<p>
+ Sets location of fallback system-wide configuration file.
+ This file is read only if per-instance one does not exist.
+</p>
+</dd>
+<dt class="hdlist1">
+GITWEB_CONFIG_COMMON
+</dt>
+<dd>
+<p>
+ Sets location of common system-wide configuration file.
+</p>
+</dd>
+</dl></div>
+</div>
+<h2 id="_files">FILES</h2>
+<div class="sectionbody">
+<div class="dlist"><dl>
+<dt class="hdlist1">
+gitweb_config.perl
+</dt>
+<dd>
+<p>
+ This is default name of per-instance configuration file. The
+ format of this file is described above.
+</p>
+</dd>
+<dt class="hdlist1">
+/etc/gitweb.conf
+</dt>
+<dd>
+<p>
+ This is default name of fallback system-wide configuration
+ file. This file is used only if per-instance configuration
+ variable is not found.
+</p>
+</dd>
+<dt class="hdlist1">
+/etc/gitweb-common.conf
+</dt>
+<dd>
+<p>
+ This is default name of common system-wide configuration
+ file.
+</p>
+</dd>
+</dl></div>
+</div>
+<h2 id="_see_also">SEE ALSO</h2>
+<div class="sectionbody">
+<div class="paragraph"><p><a href="gitweb.html">gitweb(1)</a>, <a href="git-instaweb.html">git-instaweb(1)</a></p></div>
+<div class="paragraph"><p><em>gitweb/README</em>, <em>gitweb/INSTALL</em></p></div>
+</div>
+<h2 id="_git">GIT</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
+</div>
+</div>
+<div id="footnotes"><hr /></div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2011-10-19 11:41:17 PDT
+</div>
+</div>
+</body>
+</html>