This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
		
			
				
	
	
		
			970 lines
		
	
	
	
		
			40 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			970 lines
		
	
	
	
		
			40 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| gitweb.conf(5)
 | |
| ==============
 | |
| 
 | |
| NAME
 | |
| ----
 | |
| gitweb.conf - Gitweb (Git web interface) configuration file
 | |
| 
 | |
| SYNOPSIS
 | |
| --------
 | |
| /etc/gitweb.conf, /etc/gitweb-common.conf, $GITWEBDIR/gitweb_config.perl
 | |
| 
 | |
| DESCRIPTION
 | |
| -----------
 | |
| 
 | |
| 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 "`our $variable = value`"; text from a "#" character until the
 | |
| end of a line is ignored.  See *perlsyn*(1) for details.
 | |
| 
 | |
| An example:
 | |
| 
 | |
| ------------------------------------------------
 | |
| # gitweb configuration file for http://git.example.org
 | |
| #
 | |
| our $projectroot = "/srv/git"; # FHS recommendation
 | |
| our $site_name = 'Example.org >> Repos';
 | |
| ------------------------------------------------
 | |
| 
 | |
| 
 | |
| The configuration file is used to override the default settings that
 | |
| were built into gitweb at the time the 'gitweb.cgi' script was generated.
 | |
| 
 | |
| 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 'gitweb_config.perl' -- allowing
 | |
| one to have multiple gitweb instances with different configurations by
 | |
| the use of symlinks.
 | |
| 
 | |
| Note that some configuration can be controlled on per-repository rather than
 | |
| gitweb-wide basis: see "Per-repository gitweb configuration" subsection on
 | |
| linkgit:gitweb[1] manpage.
 | |
| 
 | |
| 
 | |
| DISCUSSION
 | |
| ----------
 | |
| Gitweb reads configuration data from the following sources in the
 | |
| following order:
 | |
| 
 | |
|  * built-in values (some set during build stage),
 | |
| 
 | |
|  * common system-wide configuration file (defaults to
 | |
|    `/etc/gitweb-common.conf`),
 | |
| 
 | |
|  * either per-instance configuration file (defaults to 'gitweb_config.perl'
 | |
|    in the same directory as the installed gitweb), or if it does not exists
 | |
|    then fallback system-wide configuration file (defaults to `/etc/gitweb.conf`).
 | |
| 
 | |
| Values obtained in later configuration files override values obtained earlier
 | |
| in the above sequence.
 | |
| 
 | |
| 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 `GITWEB_CONFIG_COMMON`, `GITWEB_CONFIG_SYSTEM`
 | |
| and `GITWEB_CONFIG`.
 | |
| 
 | |
| You can also override locations of gitweb configuration files during
 | |
| runtime by setting the following environment variables:
 | |
| `GITWEB_CONFIG_COMMON`, `GITWEB_CONFIG_SYSTEM` and `GITWEB_CONFIG`
 | |
| to a non-empty value.
 | |
| 
 | |
| 
 | |
| 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
 | |
| `our` qualifier (as in "`our $variable = <value>;`") to avoid syntax
 | |
| errors if a new version of gitweb no longer uses a variable and therefore
 | |
| stops declaring it.
 | |
| 
 | |
| 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
 | |
| `/etc/gitweb-gitolite.conf`.  To include it, put
 | |
| 
 | |
| --------------------------------------------------
 | |
| read_config_file("/etc/gitweb-gitolite.conf");
 | |
| --------------------------------------------------
 | |
| 
 | |
| 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.
 | |
| 
 | |
| 
 | |
| 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 `%features` variable (see also "Configuring gitweb
 | |
| features" section below).
 | |
| 
 | |
| 
 | |
| CONFIGURATION VARIABLES
 | |
| -----------------------
 | |
| Some configuration variables have their default values (embedded in the CGI
 | |
| script) set during building gitweb -- if that is the case, this fact is put
 | |
| in their description.  See gitweb's 'INSTALL' file for instructions on building
 | |
| and installing gitweb.
 | |
| 
 | |
| 
 | |
| Location of repositories
 | |
| ~~~~~~~~~~~~~~~~~~~~~~~~
 | |
| The configuration variables described below control how gitweb finds
 | |
| Git repositories, and how repositories are displayed and accessed.
 | |
| 
 | |
| See also "Repositories" and later subsections in linkgit:gitweb[1] manpage.
 | |
| 
 | |
| $projectroot::
 | |
| 	Absolute filesystem path which will be prepended to project path;
 | |
| 	the path to repository is `$projectroot/$project`.  Set to
 | |
| 	`$GITWEB_PROJECTROOT` during installation.  This variable has to be
 | |
| 	set correctly for gitweb to find repositories.
 | |
| +
 | |
| For example, if `$projectroot` is set to "/srv/git" by putting the following
 | |
| in gitweb config file:
 | |
| +
 | |
| ----------------------------------------------------------------------------
 | |
| our $projectroot = "/srv/git";
 | |
| ----------------------------------------------------------------------------
 | |
| +
 | |
| then
 | |
| +
 | |
| ------------------------------------------------
 | |
| http://git.example.com/gitweb.cgi?p=foo/bar.git
 | |
| ------------------------------------------------
 | |
| +
 | |
| and its path_info based equivalent
 | |
| +
 | |
| ------------------------------------------------
 | |
| http://git.example.com/gitweb.cgi/foo/bar.git
 | |
| ------------------------------------------------
 | |
| +
 | |
| will map to the path `/srv/git/foo/bar.git` on the filesystem.
 | |
| 
 | |
| $projects_list::
 | |
| 	Name of a plain text file listing projects, or a name of directory
 | |
| 	to be scanned for projects.
 | |
| +
 | |
| Project list files should list one project per line, with each line
 | |
| having the following format
 | |
| +
 | |
| -----------------------------------------------------------------------------
 | |
| <URI-encoded filesystem path to repository> SP <URI-encoded repository owner>
 | |
| -----------------------------------------------------------------------------
 | |
| +
 | |
| The default value of this variable is determined by the `GITWEB_LIST`
 | |
| makefile variable at installation time.  If this variable is empty, gitweb
 | |
| will fall back to scanning the `$projectroot` directory for repositories.
 | |
| 
 | |
| $project_maxdepth::
 | |
| 	If `$projects_list` variable is unset, gitweb will recursively
 | |
| 	scan filesystem for Git repositories.  The `$project_maxdepth`
 | |
| 	is used to limit traversing depth, relative to `$projectroot`
 | |
| 	(starting point); it means that directories which are further
 | |
| 	from `$projectroot` than `$project_maxdepth` will be skipped.
 | |
| +
 | |
| 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.
 | |
| +
 | |
| The default value of this variable is determined by the build-time
 | |
| configuration variable `GITWEB_PROJECT_MAXDEPTH`, which defaults to
 | |
| 2007.
 | |
| 
 | |
| $export_ok::
 | |
| 	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 `GITWEB_EXPORT_OK`.  This path is
 | |
| 	relative to `GIT_DIR`.  git-daemon[1] uses 'git-daemon-export-ok',
 | |
| 	unless started with `--export-all`.  By default this variable is
 | |
| 	not set, which means that this feature is turned off.
 | |
| 
 | |
| $export_auth_hook::
 | |
| 	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:
 | |
| +
 | |
| ----------------------------------------------------------------------------
 | |
| our $export_auth_hook = sub { return -e "$_[0]/git-daemon-export-ok"; };
 | |
| ----------------------------------------------------------------------------
 | |
| +
 | |
| though the above might be done by using `$export_ok` instead
 | |
| +
 | |
| ----------------------------------------------------------------------------
 | |
| our $export_ok = "git-daemon-export-ok";
 | |
| ----------------------------------------------------------------------------
 | |
| +
 | |
| If not set (default), it means that this feature is disabled.
 | |
| +
 | |
| See also more involved example in "Controlling access to Git repositories"
 | |
| subsection on linkgit:gitweb[1] manpage.
 | |
| 
 | |
| $strict_export::
 | |
| 	Only allow viewing of repositories also shown on the overview page.
 | |
| 	This for example makes `$export_ok` file decide if repository is
 | |
| 	available and not only if it is shown.  If `$projects_list` points to
 | |
| 	file with list of project, only those repositories listed would be
 | |
| 	available for gitweb.  Can be set during building gitweb via
 | |
| 	`GITWEB_STRICT_EXPORT`.  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).
 | |
| 
 | |
| 
 | |
| Finding files
 | |
| ~~~~~~~~~~~~~
 | |
| The following configuration variables tell gitweb where to find files.
 | |
| The values of these variables are paths on the filesystem.
 | |
| 
 | |
| $GIT::
 | |
| 	Core git executable to use.  By default set to `$GIT_BINDIR/git`, which
 | |
| 	in turn is by default set to `$(bindir)/git`.  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.
 | |
| 
 | |
| $mimetypes_file::
 | |
| 	File to use for (filename extension based) guessing of MIME types before
 | |
| 	trying `/etc/mime.types`.  *NOTE* that this path, if relative, is taken
 | |
| 	as relative to the current Git repository, not to CGI script.  If unset,
 | |
| 	only `/etc/mime.types` is used (if present on filesystem).  If no mimetypes
 | |
| 	file is found, mimetype guessing based on extension of file is disabled.
 | |
| 	Unset by default.
 | |
| 
 | |
| $highlight_bin::
 | |
| 	Path to the highlight executable to use (it must be the one from
 | |
| 	http://www.andre-simon.de[] due to assumptions about parameters and output).
 | |
| 	By default set to 'highlight'; set it to full path to highlight
 | |
| 	executable if it is not installed on your web server's PATH.
 | |
| 	Note that 'highlight' feature must be set for gitweb to actually
 | |
| 	use syntax highlighting.
 | |
| +
 | |
| *NOTE*: for a file to be highlighted, its syntax type must be detected
 | |
| and that syntax must be supported by "highlight".  The default syntax
 | |
| detection is minimal, and there are many supported syntax types with no
 | |
| detection by default.  There are three options for adding syntax
 | |
| detection.  The first and second priority are `%highlight_basename` and
 | |
| `%highlight_ext`, which detect based on basename (the full filename, for
 | |
| example "Makefile") and extension (for example "sh").  The keys of these
 | |
| hashes are the basename and extension, respectively, and the value for a
 | |
| given key is the name of the syntax to be passed via `--syntax <syntax>`
 | |
| to "highlight".  The last priority is the "highlight" configuration of
 | |
| `Shebang` regular expressions to detect the language based on the first
 | |
| line in the file, (for example, matching the line "#!/bin/bash").  See
 | |
| the highlight documentation and the default config at
 | |
| /etc/highlight/filetypes.conf for more details.
 | |
| +
 | |
| 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:
 | |
| +
 | |
| ---------------------------------------------------------
 | |
| our %highlight_ext;
 | |
| $highlight_ext{'phtml'} = 'php';
 | |
| ---------------------------------------------------------
 | |
| 
 | |
| 
 | |
| Links and their targets
 | |
| ~~~~~~~~~~~~~~~~~~~~~~~
 | |
| 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 `@stylesheets`
 | |
| variable.
 | |
| 
 | |
| @stylesheets::
 | |
| 	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 `site` stylesheet by putting
 | |
| +
 | |
| ----------------------------------------------------------------------------
 | |
| push @stylesheets, "gitweb-site.css";
 | |
| ----------------------------------------------------------------------------
 | |
| +
 | |
| in the gitweb config file.  Those values that are relative paths are
 | |
| relative to base URI of gitweb.
 | |
| +
 | |
| This list should contain the URI of gitweb's standard stylesheet.  The default
 | |
| URI of gitweb stylesheet can be set at build time using the `GITWEB_CSS`
 | |
| makefile variable.  Its default value is `static/gitweb.css`
 | |
| (or `static/gitweb.min.css` if the `CSSMIN` variable is defined,
 | |
| i.e. if CSS minifier is used during build).
 | |
| +
 | |
| *Note*: there is also a legacy `$stylesheet` configuration variable, which was
 | |
| used by older gitweb.  If `$stylesheet` variable is defined, only CSS stylesheet
 | |
| given by this variable is used by gitweb.
 | |
| 
 | |
| $logo::
 | |
| 	Points to the location where you put 'git-logo.png' 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 `GITWEB_LOGO` variable
 | |
| 	By default set to `static/git-logo.png`.
 | |
| 
 | |
| $favicon::
 | |
| 	Points to the location where you put 'git-favicon.png' 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'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 `GITWEB_FAVICON` variable.
 | |
| 	By default set to `static/git-favicon.png`.
 | |
| 
 | |
| $javascript::
 | |
| 	Points to the location where you put 'gitweb.js' 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 `GITWEB_JS` build-time configuration variable.
 | |
| +
 | |
| The default value is either `static/gitweb.js`, or `static/gitweb.min.js` if
 | |
| the `JSMIN` build variable was defined, i.e. if JavaScript minifier was used
 | |
| at build time.  *Note* that this single file is generated from multiple
 | |
| individual JavaScript "modules".
 | |
| 
 | |
| $home_link::
 | |
| 	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 `$my_uri` variable, or to "/" if `$my_uri` is undefined
 | |
| 	or is an empty string).
 | |
| 
 | |
| $home_link_str::
 | |
| 	Label for the "home link" at the top of all pages, leading to `$home_link`
 | |
| 	(usually the main gitweb page, which contains the projects list).  It is
 | |
| 	used as the first component of gitweb's "breadcrumb trail":
 | |
| 	`<home link> / <project> / <action>`.  Can be set at build time using
 | |
| 	the `GITWEB_HOME_LINK_STR` variable.  By default it is set to "projects",
 | |
| 	as this link leads to the list of projects.  Another popular choice is to
 | |
| 	set it to the name of site.  Note that it is treated as raw HTML so it
 | |
| 	should not be set from untrusted sources.
 | |
| 
 | |
| @extra_breadcrumbs::
 | |
| 	Additional links to be added to the start of the breadcrumb trail before
 | |
| 	the home link, to pages that are logically "above" the gitweb projects
 | |
| 	list, such as the organization and department which host the gitweb
 | |
| 	server. Each element of the list is a reference to an array, in which
 | |
| 	element 0 is the link text (equivalent to `$home_link_str`) and element
 | |
| 	1 is the target URL (equivalent to `$home_link`).
 | |
| +
 | |
| For example, the following setting produces a breadcrumb trail like
 | |
| "home / dev / projects / ..." where "projects" is the home link.
 | |
| +
 | |
| ----------------------------------------------------------------------------
 | |
|     our @extra_breadcrumbs = (
 | |
|       [ 'home' => 'https://www.example.org/' ],
 | |
|       [ 'dev'  => 'https://dev.example.org/' ],
 | |
|     );
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| $logo_url::
 | |
| $logo_label::
 | |
| 	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, https://git-scm.com[]; in the past, they pointed
 | |
| 	to Git documentation at https://www.kernel.org[].
 | |
| 
 | |
| 
 | |
| Changing gitweb's look
 | |
| ~~~~~~~~~~~~~~~~~~~~~~
 | |
| 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.
 | |
| 
 | |
| $site_name::
 | |
| 	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 `SERVER_NAME`
 | |
| 	`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).
 | |
| +
 | |
| Can be set using the `GITWEB_SITENAME` at build time.  Unset by default.
 | |
| 
 | |
| $site_html_head_string::
 | |
| 	HTML snippet to be included in the <head> section of each page.
 | |
| 	Can be set using `GITWEB_SITE_HTML_HEAD_STRING` at build time.
 | |
| 	No default value.
 | |
| 
 | |
| $site_header::
 | |
| 	Name of a file with HTML to be included at the top of each page.
 | |
| 	Relative to the directory containing the 'gitweb.cgi' script.
 | |
| 	Can be set using `GITWEB_SITE_HEADER` at build time.  No default
 | |
| 	value.
 | |
| 
 | |
| $site_footer::
 | |
| 	Name of a file with HTML to be included at the bottom of each page.
 | |
| 	Relative to the directory containing the 'gitweb.cgi' script.
 | |
| 	Can be set using `GITWEB_SITE_FOOTER` at build time.  No default
 | |
| 	value.
 | |
| 
 | |
| $home_text::
 | |
| 	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 `GITWEB_HOMETEXT` variable.
 | |
| 	By default set to 'indextext.html'.
 | |
| 
 | |
| $projects_list_description_width::
 | |
| 	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 'title' attribute (usually shown on
 | |
| 	mouseover).  The default is 25, which might be too small if you
 | |
| 	use long project descriptions.
 | |
| 
 | |
| $default_projects_order::
 | |
| 	Default value of ordering of projects on projects list page, which
 | |
| 	means the ordering used if you don'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 `$projectroot`), "descr"
 | |
| 	(project description), "owner", and "age" (by date of most current
 | |
| 	commit).
 | |
| +
 | |
| Default value is "project".  Unknown value means unsorted.
 | |
| 
 | |
| 
 | |
| Changing gitweb's behavior
 | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
 | |
| These configuration variables control _internal_ gitweb behavior.
 | |
| 
 | |
| $default_blob_plain_mimetype::
 | |
| 	Default mimetype for the blob_plain (raw) view, if mimetype checking
 | |
| 	doesn'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 `$mimetypes_file` (if set and file exists)
 | |
| 	and `/etc/mime.types` files (see *mime.types*(5) manpage; only
 | |
| 	filename extension rules are supported by gitweb).
 | |
| 
 | |
| $default_text_plain_charset::
 | |
| 	Default charset for text files. If this is not set, the web server
 | |
| 	configuration will be used.  Unset by default.
 | |
| 
 | |
| $fallback_encoding::
 | |
| 	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 *Encoding::Supported*(3pm)
 | |
| 	man page for a list. The default is "latin1", aka. "iso-8859-1".
 | |
| 
 | |
| @diff_opts::
 | |
| 	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't want to have renames
 | |
| 	detection.
 | |
| +
 | |
| *Note* 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').
 | |
| 
 | |
| 
 | |
| Some optional features and policies
 | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | |
| Most of features are configured via `%feature` 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).
 | |
| 
 | |
| @git_base_url_list::
 | |
| 	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 "`$git_base_url/$project`",
 | |
| 	for each element of this list. You can set up multiple base URLs
 | |
| 	(for example one for `git://` protocol, and one for `http://`
 | |
| 	protocol).
 | |
| +
 | |
| Note that per repository configuration can be set in `$GIT_DIR/cloneurl`
 | |
| file, or as values of multi-value `gitweb.url` configuration variable in
 | |
| project config.  Per-repository configuration takes precedence over value
 | |
| composed from `@git_base_url_list` elements and project name.
 | |
| +
 | |
| You can setup one single value (single entry/item in this list) at build
 | |
| time by setting the `GITWEB_BASE_URL` build-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.
 | |
| 
 | |
| $projects_list_group_categories::
 | |
| 	Whether to enable the grouping of projects by category on the project
 | |
| 	list page. The category of a project is determined by the
 | |
| 	`$GIT_DIR/category` file or the `gitweb.category` variable in each
 | |
| 	repository's configuration.  Disabled by default (set to 0).
 | |
| 
 | |
| $project_list_default_category::
 | |
| 	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 `$projects_list_group_categories`
 | |
| 	is true.  By default set to "" (empty string).
 | |
| 
 | |
| $prevent_xss::
 | |
| 	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't trust the content of your repositories.
 | |
| 	False by default (set to 0).
 | |
| 
 | |
| $maxload::
 | |
| 	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 `/proc/loadavg`; the load there is the number of active
 | |
| 	tasks on the system -- processes that are actually running -- averaged
 | |
| 	over the last minute.
 | |
| +
 | |
| Set `$maxload` to undefined value (`undef`) to turn this feature off.
 | |
| The default value is 300.
 | |
| 
 | |
| $omit_age_column::
 | |
| 	If true, omit the column with date of the most current commit on the
 | |
| 	projects list page. It can save a bit of I/O and a fork per repository.
 | |
| 
 | |
| $omit_owner::
 | |
| 	If true prevents displaying information about repository owner.
 | |
| 
 | |
| $per_request_config::
 | |
| 	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
 | |
| +
 | |
| --------------------------------------------------------------------------------
 | |
| our $per_request_config = sub {
 | |
| 	$ENV{GL_USER} = $cgi->remote_user || "gitweb";
 | |
| };
 | |
| --------------------------------------------------------------------------------
 | |
| +
 | |
| If `$per_request_config` 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).
 | |
| +
 | |
| *NOTE*: `$my_url`, `$my_uri`, and `$base_url` 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.
 | |
| +
 | |
| This variable matters only when using persistent web environments that
 | |
| serve multiple requests using single gitweb instance, like mod_perl,
 | |
| FastCGI or Plackup.
 | |
| 
 | |
| 
 | |
| Other variables
 | |
| ~~~~~~~~~~~~~~~
 | |
| Usually you should not need to change (adjust) any of configuration
 | |
| variables described below; they should be automatically set by gitweb to
 | |
| correct value.
 | |
| 
 | |
| 
 | |
| $version::
 | |
| 	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
 | |
| +
 | |
| ---------------------------------------------------
 | |
| our $version .= " with caching";
 | |
| ---------------------------------------------------
 | |
| +
 | |
| 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.
 | |
| 
 | |
| $my_url::
 | |
| $my_uri::
 | |
| 	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
 | |
| 	`$per_request_config` if you need to set them still.
 | |
| 
 | |
| $base_url::
 | |
| 	Base URL for relative URLs in pages generated by gitweb,
 | |
| 	(e.g. `$logo`, `$favicon`, `@stylesheets` if they are relative URLs),
 | |
| 	needed and used '<base href="$base_url">' 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 `$per_request_config` if you need to override it anyway.
 | |
| 
 | |
| 
 | |
| CONFIGURING GITWEB FEATURES
 | |
| ---------------------------
 | |
| Many gitweb features can be enabled (or disabled) and configured using the
 | |
| `%feature` hash.  Names of gitweb features are keys of this hash.
 | |
| 
 | |
| Each `%feature` hash element is a hash reference and has the following
 | |
| structure:
 | |
| ----------------------------------------------------------------------
 | |
| "<feature_name>" => {
 | |
| 	"sub" => <feature-sub (subroutine)>,
 | |
| 	"override" => <allow-override (boolean)>,
 | |
| 	"default" => [ <options>... ]
 | |
| },
 | |
| ----------------------------------------------------------------------
 | |
| Some features cannot be overridden per project.  For those
 | |
| features the structure of appropriate `%feature` hash element has a simpler
 | |
| form:
 | |
| ----------------------------------------------------------------------
 | |
| "<feature_name>" => {
 | |
| 	"override" => 0,
 | |
| 	"default" => [ <options>... ]
 | |
| },
 | |
| ----------------------------------------------------------------------
 | |
| As one can see it lacks the \'sub' element.
 | |
| 
 | |
| The meaning of each part of feature configuration is described
 | |
| below:
 | |
| 
 | |
| default::
 | |
| 	List (array reference) of feature parameters (if there are any),
 | |
| 	used also to toggle (enable or disable) given feature.
 | |
| +
 | |
| Note that it is currently *always* an array reference, even if
 | |
| feature doesn'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 `[1]`, and torn it off by setting it to
 | |
| `[0]`.  See also the passage about the "blame" feature in the "Examples"
 | |
| section.
 | |
| +
 | |
| To disable features that accept parameters (are configurable), you
 | |
| need to set this element to empty list i.e. `[]`.
 | |
| 
 | |
| override::
 | |
| 	If this field has a true value then the given feature is
 | |
| 	overridable, which means that it can be configured
 | |
| 	(or enabled/disabled) on a per-repository basis.
 | |
| +
 | |
| Usually given "<feature>" is configurable via the `gitweb.<feature>`
 | |
| config variable in the per-repository Git configuration file.
 | |
| +
 | |
| *Note* that no feature is overridable by default.
 | |
| 
 | |
| sub::
 | |
| 	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.
 | |
| +
 | |
| You wouldn't need to ever change it in gitweb config file.
 | |
| 
 | |
| 
 | |
| Features in `%feature`
 | |
| ~~~~~~~~~~~~~~~~~~~~~~
 | |
| The gitweb features that are configurable via `%feature` 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.
 | |
| 
 | |
| blame::
 | |
| 	Enable the "blame" and "blame_incremental" blob views, showing for
 | |
| 	each line the last commit that modified it; see linkgit:git-blame[1].
 | |
| 	This can be very CPU-intensive and is therefore disabled by default.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.blame` configuration variable (boolean).
 | |
| 
 | |
| snapshot::
 | |
| 	Enable and configure the "snapshot" action, which allows user to
 | |
| 	download a compressed archive of any tree or commit, as produced
 | |
| 	by linkgit:git-archive[1] and possibly additionally compressed.
 | |
| 	This can potentially generate high traffic if you have large project.
 | |
| +
 | |
| The value of \'default' is a list of names of snapshot formats,
 | |
| defined in `%known_snapshot_formats` 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.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.snapshot` configuration variable, which contains
 | |
| a comma separated list of formats or "none" to disable snapshots.
 | |
| Unknown values are ignored.
 | |
| 
 | |
| grep::
 | |
| 	Enable grep search, which lists the files in currently selected
 | |
| 	tree (directory) containing the given string; see linkgit:git-grep[1].
 | |
| 	This can be potentially CPU-intensive, of course.  Enabled by default.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.grep` configuration variable (boolean).
 | |
| 
 | |
| pickaxe::
 | |
| 	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.
 | |
| +
 | |
| The pickaxe search is described in linkgit:git-log[1] (the
 | |
| description of `-S<string>` option, which refers to pickaxe entry in
 | |
| linkgit:gitdiffcore[7] for more details).
 | |
| +
 | |
| This feature can be configured on a per-repository basis by setting
 | |
| repository's `gitweb.pickaxe` configuration variable (boolean).
 | |
| 
 | |
| show-sizes::
 | |
| 	Enable showing size of blobs (ordinary files) in a "tree" view, in a
 | |
| 	separate column, similar to what `ls -l` does; see description of
 | |
| 	`-l` option in linkgit:git-ls-tree[1] manpage.  This costs a bit of
 | |
| 	I/O.  Enabled by default.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.showSizes` configuration variable (boolean).
 | |
| 
 | |
| patches::
 | |
| 	Enable and configure "patches" view, which displays list of commits in email
 | |
| 	(plain text) output format; see also linkgit:git-format-patch[1].
 | |
| 	The value is the maximum number of patches in a patchset generated
 | |
| 	in "patches" view.  Set the 'default' 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.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.patches` configuration variable (integer).
 | |
| 
 | |
| avatar::
 | |
| 	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.
 | |
| +
 | |
| Currently available providers are *"gravatar"* and *"picon"*.
 | |
| Only one provider at a time can be selected ('default' is one element list).
 | |
| If an unknown provider is specified, the feature is disabled.
 | |
| *Note* that some providers might require extra Perl packages to be
 | |
| installed; see `gitweb/INSTALL` for more details.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.avatar` configuration variable.
 | |
| +
 | |
| See also `%avatar_size` 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 `@stylesheets`), it may be appropriate to change
 | |
| these values.
 | |
| 
 | |
| highlight::
 | |
| 	Server-side syntax highlight support in "blob" view.  It requires
 | |
| 	`$highlight_bin` program to be available (see the description of
 | |
| 	this variable in the "Configuration variables" section above),
 | |
| 	and therefore is disabled by default.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.highlight` configuration variable (boolean).
 | |
| 
 | |
| remote_heads::
 | |
| 	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.  linkgit:git-instaweb[1], which is usually used
 | |
| 	to browse local repositories, enables and uses this feature.
 | |
| +
 | |
| This feature can be configured on a per-repository basis via
 | |
| repository's `gitweb.remote_heads` configuration variable (boolean).
 | |
| 
 | |
| 
 | |
| The remaining features cannot be overridden on a per project basis.
 | |
| 
 | |
| search::
 | |
| 	Enable text search, which will list the commits which match author,
 | |
| 	committer or commit text to a given string; see the description of
 | |
| 	`--author`, `--committer` and `--grep` options in linkgit:git-log[1]
 | |
| 	manpage.  Enabled by default.
 | |
| +
 | |
| Project specific override is not supported.
 | |
| 
 | |
| forks::
 | |
| 	If this feature is enabled, gitweb considers projects in
 | |
| 	subdirectories of project root (basename) to be forks of existing
 | |
| 	projects.  For each project +$projname.git+, projects in the
 | |
| 	+$projname/+ directory and its subdirectories will not be
 | |
| 	shown in the main projects list.  Instead, a \'\+' mark is shown
 | |
| 	next to +$projname+, which links to a "forks" view that lists all
 | |
| 	the forks (all projects in +$projname/+ subdirectory).  Additionally
 | |
| 	a "forks" view for a project is linked from project summary page.
 | |
| +
 | |
| If the project list is taken from a file (+$projects_list+ points to a
 | |
| file), forks are only recognized if they are listed after the main project
 | |
| in that file.
 | |
| +
 | |
| Project specific override is not supported.
 | |
| 
 | |
| actions::
 | |
| 	Insert custom links to the action bar of all project pages.  This
 | |
| 	allows you to link to third-party scripts integrating into gitweb.
 | |
| +
 | |
| The "default" value consists of a list of triplets in the form
 | |
| `("<label>", "<link>", "<position>")` where "position" is the label
 | |
| after which to insert the link, "link" is a format string where `%n`
 | |
| expands to the project name, `%f` to the project path within the
 | |
| filesystem (i.e. "$projectroot/$project"), `%h` to the current hash
 | |
| (\'h' gitweb parameter) and `%b` to the current hash base
 | |
| (\'hb' gitweb parameter); `%%` expands to \'%'.
 | |
| +
 | |
| For example, at the time this page was written, the http://repo.or.cz[]
 | |
| Git hosting site set it to the following to enable graphical log
 | |
| (using the third party tool *git-browser*):
 | |
| +
 | |
| ----------------------------------------------------------------------
 | |
| $feature{'actions'}{'default'} =
 | |
| 	[ ('graphiclog', '/git-browser/by-commit.html?r=%n', 'summary')];
 | |
| ----------------------------------------------------------------------
 | |
| +
 | |
| This adds a link titled "graphiclog" after the "summary" link, leading to
 | |
| `git-browser` script, passing `r=<project>` as a query parameter.
 | |
| +
 | |
| Project specific override is not supported.
 | |
| 
 | |
| timed::
 | |
| 	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.
 | |
| +
 | |
| Project specific override is not supported.
 | |
| 
 | |
| javascript-timezone::
 | |
| 	Enable and configure the ability to change a common time zone 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.
 | |
| +
 | |
| The value is a list of three values: a default time zone (for if the client
 | |
| hasn't selected some other time zone and saved it in a cookie), a name of cookie
 | |
| where to store selected time zone, and a CSS class used to mark up
 | |
| dates for manipulation.  If you want to turn this feature off, set "default"
 | |
| to empty list: `[]`.
 | |
| +
 | |
| Typical gitweb config files will only change starting (default) time zone,
 | |
| and leave other elements at their default values:
 | |
| +
 | |
| ---------------------------------------------------------------------------
 | |
| $feature{'javascript-timezone'}{'default'}[0] = "utc";
 | |
| ---------------------------------------------------------------------------
 | |
| +
 | |
| The example configuration presented here is guaranteed to be backwards
 | |
| and forward compatible.
 | |
| +
 | |
| Time zone values can be "local" (for local time zone that browser uses), "utc"
 | |
| (what gitweb uses when JavaScript or this feature is disabled), or numerical
 | |
| time zones in the form of "+/-HHMM", such as "+0200".
 | |
| +
 | |
| Project specific override is not supported.
 | |
| 
 | |
| extra-branch-refs::
 | |
| 	List of additional directories under "refs" which are going to
 | |
| 	be used as branch refs. For example if you have a gerrit setup
 | |
| 	where all branches under refs/heads/ are official,
 | |
| 	push-after-review ones and branches under refs/sandbox/,
 | |
| 	refs/wip and refs/other are user ones where permissions are
 | |
| 	much wider, then you might want to set this variable as
 | |
| 	follows:
 | |
| +
 | |
| --------------------------------------------------------------------------------
 | |
| $feature{'extra-branch-refs'}{'default'} =
 | |
| 	['sandbox', 'wip', 'other'];
 | |
| --------------------------------------------------------------------------------
 | |
| +
 | |
| This feature can be configured on per-repository basis after setting
 | |
| $feature{'extra-branch-refs'}{'override'} to true, via repository's
 | |
| `gitweb.extraBranchRefs` configuration variable, which contains a
 | |
| space separated list of refs. An example:
 | |
| +
 | |
| --------------------------------------------------------------------------------
 | |
| [gitweb]
 | |
| 	extraBranchRefs = sandbox wip other
 | |
| --------------------------------------------------------------------------------
 | |
| +
 | |
| The gitweb.extraBranchRefs is actually a multi-valued configuration
 | |
| variable, so following example is also correct and the result is the
 | |
| same as of the snippet above:
 | |
| +
 | |
| --------------------------------------------------------------------------------
 | |
| [gitweb]
 | |
| 	extraBranchRefs = sandbox
 | |
| 	extraBranchRefs = wip other
 | |
| --------------------------------------------------------------------------------
 | |
| +
 | |
| It is an error to specify a ref that does not pass "git check-ref-format"
 | |
| scrutiny. Duplicated values are filtered.
 | |
| 
 | |
| 
 | |
| EXAMPLES
 | |
| --------
 | |
| 
 | |
| 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:
 | |
| 
 | |
| --------------------------------------------------------------------------------
 | |
| $feature{'blame'}{'default'} = [1];
 | |
| $feature{'blame'}{'override'} = 1;
 | |
| 
 | |
| $feature{'pickaxe'}{'default'} = [1];
 | |
| $feature{'pickaxe'}{'override'} = 1;
 | |
| 
 | |
| $feature{'snapshot'}{'default'} = ['zip', 'tgz'];
 | |
| $feature{'snapshot'}{'override'} = 1;
 | |
| --------------------------------------------------------------------------------
 | |
| 
 | |
| 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 *gzip*(1) to run at level 6 by
 | |
| adding the following lines to your gitweb configuration file:
 | |
| 
 | |
| 	$known_snapshot_formats{'zip'}{'disabled'} = 1;
 | |
| 	$known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6'];
 | |
| 
 | |
| BUGS
 | |
| ----
 | |
| Debugging would be easier if the fallback configuration file
 | |
| (`/etc/gitweb.conf`) and environment variable to override its location
 | |
| ('GITWEB_CONFIG_SYSTEM') had names reflecting their "fallback" role.
 | |
| The current names are kept to avoid breaking working setups.
 | |
| 
 | |
| ENVIRONMENT
 | |
| -----------
 | |
| The location of per-instance and system-wide configuration files can be
 | |
| overridden using the following environment variables:
 | |
| 
 | |
| GITWEB_CONFIG::
 | |
| 	Sets location of per-instance configuration file.
 | |
| GITWEB_CONFIG_SYSTEM::
 | |
| 	Sets location of fallback system-wide configuration file.
 | |
| 	This file is read only if per-instance one does not exist.
 | |
| GITWEB_CONFIG_COMMON::
 | |
| 	Sets location of common system-wide configuration file.
 | |
| 
 | |
| 
 | |
| FILES
 | |
| -----
 | |
| gitweb_config.perl::
 | |
| 	This is default name of per-instance configuration file.  The
 | |
| 	format of this file is described above.
 | |
| /etc/gitweb.conf::
 | |
| 	This is default name of fallback system-wide configuration
 | |
| 	file.  This file is used only if per-instance configuration
 | |
| 	variable is not found.
 | |
| /etc/gitweb-common.conf::
 | |
| 	This is default name of common system-wide configuration
 | |
| 	file.
 | |
| 
 | |
| 
 | |
| SEE ALSO
 | |
| --------
 | |
| linkgit:gitweb[1], linkgit:git-instaweb[1]
 | |
| 
 | |
| 'gitweb/README', 'gitweb/INSTALL'
 | |
| 
 | |
| GIT
 | |
| ---
 | |
| Part of the linkgit:git[1] suite
 |