'\" t
.\" Title: cgitrc
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 10/07/2024
.\" Manual: cgit
.\" Source: cgit
.\" Language: English
.\"
.TH "CGITRC" "5" "10/07/2024" "cgit" "cgit"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
cgitrc \- runtime configuration for cgit
.SH "SYNOPSIS"
.sp
Cgitrc contains all runtime settings for cgit, including the list of git repositories, formatted as a line\-separated list of NAME=VALUE pairs\&. Blank lines, and lines starting with \fI#\fR, are ignored\&.
.SH "LOCATION"
.sp
The default location of cgitrc, defined at compile time, is /etc/cgitrc\&. At runtime, cgit will consult the environment variable CGIT_CONFIG and, if defined, use its value instead\&.
.SH "GLOBAL SETTINGS"
.PP
about\-filter
.RS 4
Specifies a command which will be invoked to format the content of about pages (both top\-level and for each repository)\&. The command will get the content of the about\-file on its STDIN, the name of the file as the first argument, and the STDOUT from the command will be included verbatim on the about page\&. Default value: none\&. See also: "FILTER API"\&.
.RE
.PP
agefile
.RS 4
Specifies a path, relative to each repository path, which can be used to specify the date and time of the youngest commit in the repository\&. The first line in the file is used as input to the "parse_date" function in libgit\&. Recommended timestamp\-format is "yyyy\-mm\-dd hh:mm:ss"\&. You may want to generate this file from a post\-receive hook\&. Default value: "info/web/last\-modified"\&.
.RE
.PP
auth\-filter
.RS 4
Specifies a command that will be invoked for authenticating repository access\&. Receives quite a few arguments, and data on both stdin and stdout for authentication processing\&. Details follow later in this document\&. If no auth\-filter is specified, no authentication is performed\&. Default value: none\&. See also: "FILTER API"\&.
.RE
.PP
branch\-sort
.RS 4
Flag which, when set to "age", enables date ordering in the branch ref list, and when set to "name" enables ordering by branch name\&. Default value: "name"\&.
.RE
.PP
cache\-about\-ttl
.RS 4
Number which specifies the time\-to\-live, in minutes, for the cached version of the repository about page\&. See also: "CACHE"\&. Default value: "15"\&.
.RE
.PP
cache\-dynamic\-ttl
.RS 4
Number which specifies the time\-to\-live, in minutes, for the cached version of repository pages accessed without a fixed SHA1\&. See also: "CACHE"\&. Default value: "5"\&.
.RE
.PP
cache\-repo\-ttl
.RS 4
Number which specifies the time\-to\-live, in minutes, for the cached version of the repository summary page\&. See also: "CACHE"\&. Default value: "5"\&.
.RE
.PP
cache\-root
.RS 4
Path used to store the cgit cache entries\&. Default value: "/var/cache/cgit"\&. See also: "MACRO EXPANSION"\&.
.RE
.PP
cache\-root\-ttl
.RS 4
Number which specifies the time\-to\-live, in minutes, for the cached version of the repository index page\&. See also: "CACHE"\&. Default value: "5"\&.
.RE
.PP
cache\-scanrc\-ttl
.RS 4
Number which specifies the time\-to\-live, in minutes, for the result of scanning a path for git repositories\&. See also: "CACHE"\&. Default value: "15"\&.
.RE
.PP
case\-sensitive\-sort
.RS 4
Sort items in the repo list case sensitively\&. Default value: "1"\&. See also: repository\-sort, section\-sort\&.
.RE
.PP
cache\-size
.RS 4
The maximum number of entries in the cgit cache\&. When set to "0", caching is disabled\&. See also: "CACHE"\&. Default value: "0"
.RE
.PP
cache\-snapshot\-ttl
.RS 4
Number which specifies the time\-to\-live, in minutes, for the cached version of snapshots\&. See also: "CACHE"\&. Default value: "5"\&.
.RE
.PP
cache\-static\-ttl
.RS 4
Number which specifies the time\-to\-live, in minutes, for the cached version of repository pages accessed with a fixed SHA1\&. See also: "CACHE"\&. Default value: \-1"\&.
.RE
.PP
clone\-prefix
.RS 4
Space\-separated list of common prefixes which, when combined with a repository url, generates valid clone urls for the repository\&. This setting is only used if
repo\&.clone\-url
is unspecified\&. Default value: none\&.
.RE
.PP
clone\-url
.RS 4
Space\-separated list of clone\-url templates\&. This setting is only used if
repo\&.clone\-url
is unspecified\&. Default value: none\&. See also: "MACRO EXPANSION", "FILTER API"\&.
.RE
.PP
commit\-filter
.RS 4
Specifies a command which will be invoked to format commit messages\&. The command will get the message on its STDIN, and the STDOUT from the command will be included verbatim as the commit message, i\&.e\&. this can be used to implement bugtracker integration\&. Default value: none\&. See also: "FILTER API"\&.
.RE
.PP
commit\-sort
.RS 4
Flag which, when set to "date", enables strict date ordering in the commit log, and when set to "topo" enables strict topological ordering\&. If unset, the default ordering of "git log" is used\&. Default value: unset\&.
.RE
.PP
css
.RS 4
Url which specifies the css document to include in all cgit pages\&. Default value: "/cgit\&.css"\&. May be given multiple times, each css URL path is added in the head section of the document in turn\&.
.RE
.PP
email\-filter
.RS 4
Specifies a command which will be invoked to format names and email address of committers, authors, and taggers, as represented in various places throughout the cgit interface\&. This command will receive an email address and an origin page string as its command line arguments, and the text to format on STDIN\&. It is to write the formatted text back out onto STDOUT\&. Default value: none\&. See also: "FILTER API"\&.
.RE
.PP
embedded
.RS 4
Flag which, when set to "1", will make cgit generate a html fragment suitable for embedding in other html pages\&. Default value: none\&. See also: "noheader"\&.
.RE
.PP
enable\-blame
.RS 4
Flag which, when set to "1", will allow cgit to provide a "blame" page for files, and will make it generate links to that page in appropriate places\&. Default value: "0"\&.
.RE
.PP
enable\-commit\-graph
.RS 4
Flag which, when set to "1", will make cgit print an ASCII\-art commit history graph to the left of the commit messages in the repository log page\&. Default value: "0"\&.
.RE
.PP
enable\-filter\-overrides
.RS 4
Flag which, when set to "1", allows all filter settings to be overridden in repository\-specific cgitrc files\&. Default value: none\&.
.RE
.PP
enable\-follow\-links
.RS 4
Flag which, when set to "1", allows users to follow a file in the log view\&. Default value: "0"\&.
.RE
.PP
enable\-git\-config
.RS 4
Flag which, when set to "1", will allow cgit to use git config to set any repo specific settings\&. This option is used in conjunction with "scan\-path", and must be defined prior, to augment repo\-specific settings\&. The keys gitweb\&.owner, gitweb\&.category, gitweb\&.description, and gitweb\&.homepage will map to the cgit keys repo\&.owner, repo\&.section, repo\&.desc, and repo\&.homepage respectively\&. All git config keys that begin with "cgit\&." will be mapped to the corresponding "repo\&." key in cgit\&. Default value: "0"\&. See also: scan\-path, section\-from\-path\&.
.RE
.PP
enable\-http\-clone
.RS 4
If set to "1", cgit will act as a dumb HTTP endpoint for git clones\&. You can add "http://$HTTP_HOST$SCRIPT_NAME/$CGIT_REPO_URL" to clone\-url to expose this feature\&. If you use an alternate way of serving git repositories, you may wish to disable this\&. Default value: "1"\&.
.RE
.PP
enable\-html\-serving
.RS 4
Flag which, when set to "1", will allow the /plain handler to serve mimetype headers that result in the file being treated as HTML by the browser\&. When set to "0", such file types are returned instead as text/plain or application/octet\-stream\&. Default value: "0"\&. See also: "repo\&.enable\-html\-serving"\&.
.RE
.PP
enable\-index\-links
.RS 4
Flag which, when set to "1", will make cgit generate extra links for each repo in the repository index (specifically, to the "summary", "commit" and "tree" pages)\&. Default value: "0"\&.
.RE
.PP
enable\-index\-owner
.RS 4
Flag which, when set to "1", will make cgit display the owner of each repo in the repository index\&. Default value: "1"\&.
.RE
.PP
enable\-log\-filecount
.RS 4
Flag which, when set to "1", will make cgit print the number of modified files for each commit on the repository log page\&. Default value: "0"\&.
.RE
.PP
enable\-log\-linecount
.RS 4
Flag which, when set to "1", will make cgit print the number of added and removed lines for each commit on the repository log page\&. Default value: "0"\&.
.RE
.PP
enable\-remote\-branches
.RS 4
Flag which, when set to "1", will make cgit display remote branches in the summary and refs views\&. Default value: "0"\&. See also: "repo\&.enable\-remote\-branches"\&.
.RE
.PP
enable\-subject\-links
.RS 4
Flag which, when set to "1", will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view\&. Default value: "0"\&. See also: "repo\&.enable\-subject\-links"\&.
.RE
.PP
enable\-tree\-linenumbers
.RS 4
Flag which, when set to "1", will make cgit generate linenumber links for plaintext blobs printed in the tree view\&. Default value: "1"\&.
.RE
.PP
favicon
.RS 4
Url used as link to a shortcut icon for cgit\&. It is suggested to use the value "/favicon\&.ico" since certain browsers will ignore other values\&. Default value: "/favicon\&.ico"\&.
.RE
.PP
footer
.RS 4
The content of the file specified with this option will be included verbatim at the bottom of all pages (i\&.e\&. it replaces the standard "generated by\&..." message\&. Default value: none\&.
.RE
.PP
head\-include
.RS 4
The content of the file specified with this option will be included verbatim in the html HEAD section on all pages\&. Default value: none\&.
.RE
.PP
header
.RS 4
The content of the file specified with this option will be included verbatim at the top of all pages\&. Default value: none\&.
.RE
.PP
include
.RS 4
Name of a configfile to include before the rest of the current config\- file is parsed\&. Default value: none\&. See also: "MACRO EXPANSION"\&.
.RE
.PP
js
.RS 4
Url which specifies the javascript script document to include in all cgit pages\&. Default value: "/cgit\&.js"\&. Setting this to an empty string will disable generation of the link to this file in the head section\&.
.RE
.PP
local\-time
.RS 4
Flag which, if set to "1", makes cgit print commit and tag times in the servers timezone\&. Default value: "0"\&.
.RE
.PP
logo
.RS 4
Url which specifies the source of an image which will be used as a logo on all cgit pages\&. Default value: "/cgit\&.png"\&.
.RE
.PP
logo\-link
.RS 4
Url loaded when clicking on the cgit logo image\&. If unspecified the calculated url of the repository index page will be used\&. Default value: none\&.
.RE
.PP
max\-atom\-items
.RS 4
Specifies the number of items to display in atom feeds view\&. Default value: "10"\&.
.RE
.PP
max\-blob\-size
.RS 4
Specifies the maximum size of a blob to display HTML for in KBytes\&. Default value: "0" (limit disabled)\&.
.RE
.PP
max\-commit\-count
.RS 4
Specifies the number of entries to list per page in "log" view\&. Default value: "50"\&.
.RE
.PP
max\-message\-length
.RS 4
Specifies the maximum number of commit message characters to display in "log" view\&. Default value: "80"\&.
.RE
.PP
max\-repo\-count
.RS 4
Specifies the number of entries to list per page on the repository index page\&. The value "0" shows all repositories without limitation\&. Default value: "50"\&.
.RE
.PP
max\-repodesc\-length
.RS 4
Specifies the maximum number of repo description characters to display on the repository index page\&. Default value: "80"\&.
.RE
.PP
max\-stats
.RS 4
Set the default maximum statistics period\&. Valid values are "week", "month", "quarter" and "year"\&. If unspecified, statistics are disabled\&. Default value: none\&. See also: "repo\&.max\-stats"\&.
.RE
.PP
mimetype\&.
.RS 4
Set the mimetype for the specified filename extension\&. This is used by the
plain
command when returning blob content\&.
.RE
.PP
mimetype\-file
.RS 4
Specifies the file to use for automatic mimetype lookup\&. If specified then this field is used as a fallback when no "mimetype\&." match is found\&. If unspecified then no such lookup is performed\&. The typical file to use on a Linux system is /etc/mime\&.types\&. The format of the file must comply to:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
a comment line is an empty line or a line starting with a hash (#), optionally preceded by whitespace
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
a non\-comment line starts with the mimetype (like image/png), followed by one or more file extensions (like jpg), all separated by whitespace Default value: none\&. See also: "mimetype\&."\&.
.RE
.RE
.PP
module\-link
.RS 4
Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing\&. The arguments for the formatstring are the path and SHA1 of the submodule commit\&. Default value: none\&.
.RE
.PP
noplainemail
.RS 4
If set to "1" showing full author email addresses will be disabled\&. Default value: "0"\&.
.RE
.PP
noheader
.RS 4
Flag which, when set to "1", will make cgit omit the standard header on all pages\&. Default value: none\&. See also: "embedded"\&.
.RE
.PP
owner\-filter
.RS 4
Specifies a command which will be invoked to format the Owner column of the main page\&. The command will get the owner on STDIN, and the STDOUT from the command will be included verbatim in the table\&. This can be used to link to additional context such as an owners home page\&. When active this filter is used instead of the default owner query url\&. Default value: none\&. See also: "FILTER API"\&.
.RE
.PP
project\-list
.RS 4
A list of subdirectories inside of scan\-path, relative to it, that should loaded as git repositories\&. This must be defined prior to scan\-path\&. Default value: none\&. See also: scan\-path, "MACRO EXPANSION"\&.
.RE
.PP
readme
.RS 4
Text which will be used as default value for "repo\&.readme"\&. Multiple config keys may be specified, and cgit will use the first found file in this list\&. This is useful in conjunction with scan\-path\&. Default value: none\&. See also: scan\-path, repo\&.readme\&.
.RE
.PP
remove\-suffix
.RS 4
If set to "1" and scan\-path is enabled, if any repositories are found with a suffix of "\&.git", this suffix will be removed for the url and name\&. This must be defined prior to scan\-path\&. Default value: "0"\&. See also: scan\-path\&.
.RE
.PP
renamelimit
.RS 4
Maximum number of files to consider when detecting renames\&. The value "\-1" uses the compiletime value in git (for further info, look at
man git\-diff)\&. Default value: "\-1"\&.
.RE
.PP
repository\-sort
.RS 4
The way in which repositories in each section are sorted\&. Valid values are "name" for sorting by the repo name or "age" for sorting by the most recently updated repository\&. Default value: "name"\&. See also: section, case\-sensitive\-sort, section\-sort\&.
.RE
.PP
robots
.RS 4
Text used as content for the "robots" meta\-tag\&. Default value: "index, nofollow"\&.
.RE
.PP
root\-desc
.RS 4
Text printed below the heading on the repository index page\&. Default value: "a fast webinterface for the git dscm"\&.
.RE
.PP
root\-readme
.RS 4
The content of the file specified with this option will be included verbatim below the "about" link on the repository index page\&. Default value: none\&.
.RE
.PP
root\-title
.RS 4
Text printed as heading on the repository index page\&. Default value: "Git Repository Browser"\&.
.RE
.PP
scan\-hidden\-path
.RS 4
If set to "1" and scan\-path is enabled, scan\-path will recurse into directories whose name starts with a period (\fI\&.\fR)\&. Otherwise, scan\-path will stay away from such directories (considered as "hidden")\&. Note that this does not apply to the "\&.git" directory in non\-bare repos\&. This must be defined prior to scan\-path\&. Default value: 0\&. See also: scan\-path\&.
.RE
.PP
scan\-path
.RS 4
A path which will be scanned for repositories\&. If caching is enabled, the result will be cached as a cgitrc include\-file in the cache directory\&. If project\-list has been defined prior to scan\-path, scan\-path loads only the directories listed in the file pointed to by project\-list\&. Be advised that only the global settings taken before the scan\-path directive will be applied to each repository\&. Default value: none\&. See also: cache\-scanrc\-ttl, project\-list, "MACRO EXPANSION"\&.
.RE
.PP
section
.RS 4
The name of the current repository section \- all repositories defined after this option will inherit the current section name\&. Default value: none\&.
.RE
.PP
section\-sort
.RS 4
Flag which, when set to "1", will sort the sections on the repository listing by name\&. Set this flag to "0" if the order in the cgitrc file should be preserved\&. Default value: "1"\&. See also: section, case\-sensitive\-sort, repository\-sort\&.
.RE
.PP
section\-from\-path
.RS 4
A number which, if defined prior to scan\-path, specifies how many path elements from each repo path to use as a default section name\&. If negative, cgit will discard the specified number of path elements above the repo directory\&. Default value: "0"\&.
.RE
.PP
side\-by\-side\-diffs
.RS 4
If set to "1" shows side\-by\-side diffs instead of unidiffs per default\&. Default value: "0"\&.
.RE
.PP
snapshots
.RS 4
Text which specifies the default set of snapshot formats that cgit generates links for\&. The value is a space\-separated list of zero or more of the values "tar", "tar\&.gz", "tar\&.bz2", "tar\&.lz", "tar\&.xz", "tar\&.zst" and "zip"\&. The special value "all" enables all snapshot formats\&. Default value: none\&. All compressors use default settings\&. Some settings can be influenced with environment variables, for example set ZSTD_CLEVEL=10 in web server environment for higher (but slower) zstd compression\&.
.RE
.PP
source\-filter
.RS 4
Specifies a command which will be invoked to format plaintext blobs in the tree view\&. The command will get the blob content on its STDIN and the name of the blob as its only command line argument\&. The STDOUT from the command will be included verbatim as the blob contents, i\&.e\&. this can be used to implement e\&.g\&. syntax highlighting\&. Default value: none\&. See also: "FILTER API"\&.
.RE
.PP
summary\-branches
.RS 4
Specifies the number of branches to display in the repository "summary" view\&. Default value: "10"\&.
.RE
.PP
summary\-log
.RS 4
Specifies the number of log entries to display in the repository "summary" view\&. Default value: "10"\&.
.RE
.PP
summary\-tags
.RS 4
Specifies the number of tags to display in the repository "summary" view\&. Default value: "10"\&.
.RE
.PP
strict\-export
.RS 4
Filename which, if specified, needs to be present within the repository for cgit to allow access to that repository\&. This can be used to emulate gitweb\(cqs EXPORT_OK and STRICT_EXPORT functionality and limit cgit\(cqs repositories to match those exported by git\-daemon\&. This option must be defined prior to scan\-path\&.
.RE
.PP
virtual\-root
.RS 4
Url which, if specified, will be used as root for all cgit links\&. It will also cause cgit to generate
\fIvirtual urls\fR, i\&.e\&. urls like
\fI/cgit/tree/README\fR
as opposed to
\fI?r=cgit&p=tree&path=README\fR\&. Default value: none\&. NOTE: cgit has recently learned how to use PATH_INFO to achieve the same kind of virtual urls, so this option will probably be deprecated\&.
.RE
.SH "REPOSITORY SETTINGS"
.PP
repo\&.about\-filter
.RS 4
Override the default about\-filter\&. Default value: none\&. See also: "enable\-filter\-overrides"\&. See also: "FILTER API"\&.
.RE
.PP
repo\&.branch\-sort
.RS 4
Flag which, when set to "age", enables date ordering in the branch ref list, and when set to "name" enables ordering by branch name\&. Default value: "name"\&.
.RE
.PP
repo\&.clone\-url
.RS 4
A list of space\-separated urls which can be used to clone this repo\&. Default value: none\&. See also: "MACRO EXPANSION"\&.
.RE
.PP
repo\&.commit\-filter
.RS 4
Override the default commit\-filter\&. Default value: none\&. See also: "enable\-filter\-overrides"\&. See also: "FILTER API"\&.
.RE
.PP
repo\&.commit\-sort
.RS 4
Flag which, when set to "date", enables strict date ordering in the commit log, and when set to "topo" enables strict topological ordering\&. If unset, the default ordering of "git log" is used\&. Default value: unset\&.
.RE
.PP
repo\&.defbranch
.RS 4
The name of the default branch for this repository\&. If no such branch exists in the repository, the first branch name (when sorted) is used as default instead\&. Default value: branch pointed to by HEAD, or "master" if there is no suitable HEAD\&.
.RE
.PP
repo\&.desc
.RS 4
The value to show as repository description\&. Default value: none\&.
.RE
.PP
repo\&.email\-filter
.RS 4
Override the default email\-filter\&. Default value: none\&. See also: "enable\-filter\-overrides"\&. See also: "FILTER API"\&.
.RE
.PP
repo\&.enable\-blame
.RS 4
A flag which can be used to disable the global setting \(oqenable\-blame\(cq\&. Default value: none\&.
.RE
.PP
repo\&.enable\-commit\-graph
.RS 4
A flag which can be used to disable the global setting \(oqenable\-commit\-graph\(cq\&. Default value: none\&.
.RE
.PP
repo\&.enable\-html\-serving
.RS 4
A flag which can be used to override the global setting
enable\-html\-serving\&. Default value: none\&.
.RE
.PP
repo\&.enable\-log\-filecount
.RS 4
A flag which can be used to disable the global setting \(oqenable\-log\-filecount\(cq\&. Default value: none\&.
.RE
.PP
repo\&.enable\-log\-linecount
.RS 4
A flag which can be used to disable the global setting \(oqenable\-log\-linecount\(cq\&. Default value: none\&.
.RE
.PP
repo\&.enable\-remote\-branches
.RS 4
Flag which, when set to "1", will make cgit display remote branches in the summary and refs views\&. Default value: \&.
.RE
.PP
repo\&.enable\-subject\-links
.RS 4
A flag which can be used to override the global setting \(oqenable\-subject\-links\(cq\&. Default value: none\&.
.RE
.PP
repo\&.extra\-head\-content
.RS 4
This value will be added verbatim to the head section of each page displayed for this repo\&. Default value: none\&.
.RE
.PP
repo\&.hide
.RS 4
Flag which, when set to "1", hides the repository from the repository index\&. The repository can still be accessed by providing a direct path\&. Default value: "0"\&. See also: "repo\&.ignore"\&.
.RE
.PP
repo\&.homepage
.RS 4
The value to show as repository homepage\&. Default value: none\&.
.RE
.PP
repo\&.ignore
.RS 4
Flag which, when set to "1", ignores the repository\&. The repository is not shown in the index and cannot be accessed by providing a direct path\&. Default value: "0"\&. See also: "repo\&.hide"\&.
.RE
.PP
repo\&.logo
.RS 4
Url which specifies the source of an image which will be used as a logo on this repo\(cqs pages\&. Default value: global logo\&.
.RE
.PP
repo\&.logo\-link
.RS 4
Url loaded when clicking on the cgit logo image\&. If unspecified the calculated url of the repository index page will be used\&. Default value: global logo\-link\&.
.RE
.PP
repo\&.module\-link
.RS 4
Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing\&. The arguments for the formatstring are the path and SHA1 of the submodule commit\&. Default value:
.RE
.PP
repo\&.module\-link\&.
.RS 4
Text which will be used as the formatstring for a hyperlink when a submodule with the specified subdirectory path is printed in a directory listing\&. The only argument for the formatstring is the SHA1 of the submodule commit\&. Default value: none\&.
.RE
.PP
repo\&.max\-stats
.RS 4
Override the default maximum statistics period\&. Valid values are equal to the values specified for the global "max\-stats" setting\&. Default value: none\&.
.RE
.PP
repo\&.name
.RS 4
The value to show as repository name\&. Default value: \&.
.RE
.PP
repo\&.owner
.RS 4
A value used to identify the owner of the repository\&. Default value: none\&.
.RE
.PP
repo\&.owner\-filter
.RS 4
Override the default owner\-filter\&. Default value: none\&. See also: "enable\-filter\-overrides"\&. See also: "FILTER API"\&.
.RE
.PP
repo\&.path
.RS 4
An absolute path to the repository directory\&. For non\-bare repositories this is the \&.git\-directory\&. Default value: none\&.
.RE
.PP
repo\&.readme
.RS 4
A path (relative to ) which specifies a file to include verbatim as the "About" page for this repo\&. You may also specify a git refspec by head or by hash by prepending the refspec followed by a colon\&. For example, "master:docs/readme\&.mkd"\&. If the value begins with a colon, i\&.e\&. ":docs/readme\&.rst", the head giving in query or the default branch of the repository will be used\&. Sharing any file will expose that entire directory tree to the "/about/PATH" endpoints, so be sure that there are no non\-public files located in the same directory as the readme file\&. Default value: \&.
.RE
.PP
repo\&.section
.RS 4
Override the current section name for this repository\&. Default value: none\&.
.RE
.PP
repo\&.snapshots
.RS 4
A mask of snapshot formats for this repo that cgit generates links for, restricted by the global "snapshots" setting\&. Default value: \&.
.RE
.PP
repo\&.snapshot\-prefix
.RS 4
Prefix to use for snapshot links instead of the repository basename\&. For example, the "linux\-stable" repository may wish to set this to "linux" so that snapshots are in the format "linux\-3\&.15\&.4" instead of "linux\-stable\-3\&.15\&.4"\&. Default value: meaning to use the repository basename\&.
.RE
.PP
repo\&.source\-filter
.RS 4
Override the default source\-filter\&. Default value: none\&. See also: "enable\-filter\-overrides"\&. See also: "FILTER API"\&.
.RE
.PP
repo\&.url
.RS 4
The relative url used to access the repository\&. This must be the first setting specified for each repo\&. Default value: none\&.
.RE
.SH "REPOSITORY\-SPECIFIC CGITRC FILE"
.sp
When the option "scan\-path" is used to auto\-discover git repositories, cgit will try to parse the file "cgitrc" within any found repository\&. Such a repo\-specific config file may contain any of the repo\-specific options described above, except "repo\&.url" and "repo\&.path"\&. Additionally, the "filter" options are only acknowledged in repo\-specific config files when "enable\-filter\-overrides" is set to "1"\&.
.sp
Note: the "repo\&." prefix is dropped from the option names in repo\-specific config files, e\&.g\&. "repo\&.desc" becomes "desc"\&.
.SH "FILTER API"
.sp
By default, filters are separate processes that are executed each time they are needed\&. Alternative technologies may be used by prefixing the filter specification with the relevant string; available values are:
.PP
\fIexec:\fR
.RS 4
The default "one process per filter" mode\&.
.RE
.PP
\fIlua:\fR
.RS 4
Executes the script using a built\-in Lua interpreter\&. The script is loaded once per execution of cgit, and may be called multiple times during cgit\(cqs lifetime, making it a good choice for repeated filters such as the
\fIemail filter\fR\&. It responds to three functions:
.RE
.PP
\fIfilter_open(argument1, argument2, argument3, \&...)\fR
.RS 4
This is called upon activation of the filter for a particular set of data\&.
.RE
.PP
\fIfilter_write(buffer)\fR
.RS 4
This is called whenever cgit writes data to the webpage\&.
.RE
.PP
\fIfilter_close()\fR
.RS 4
This is called when the current filtering operation is completed\&. It must return an integer value\&. Usually 0 indicates success\&.
.sp
.if n \{\
.RS 4
.\}
.nf
Additionally, cgit exposes to the Lua the following built\-in functions:
.fi
.if n \{\
.RE
.\}
.RE
.PP
\fIhtml(str)\fR
.RS 4
Writes
\fIstr\fR
to the webpage\&.
.RE
.PP
\fIhtml_txt(str)\fR
.RS 4
HTML escapes and writes
\fIstr\fR
to the webpage\&.
.RE
.PP
\fIhtml_attr(str)\fR
.RS 4
HTML escapes for an attribute and writes "str\*(Aq to the webpage\&.
.RE
.PP
\fIhtml_url_path(str)\fR
.RS 4
URL escapes for a path and writes
\fIstr\fR
to the webpage\&.
.RE
.PP
\fIhtml_url_arg(str)\fR
.RS 4
URL escapes for an argument and writes
\fIstr\fR
to the webpage\&.
.RE
.PP
\fIhtml_include(file)\fR
.RS 4
Includes
\fIfile\fR
in webpage\&.
.RE
.sp
Parameters are provided to filters as follows\&.
.PP
about filter
.RS 4
This filter is given a single parameter: the filename of the source file to filter\&. The filter can use the filename to determine (for example) the type of syntax to follow when formatting the readme file\&. The about text that is to be filtered is available on standard input and the filtered text is expected on standard output\&.
.RE
.PP
auth filter
.RS 4
The authentication filter receives 12 parameters:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
filter action, explained below, which specifies which action the filter is called for
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
http cookie
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
http method
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
http referer
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
http path
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
http https flag
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cgit repo
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cgit page
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cgit url
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cgit login url When the filter action is "body", this filter must write to output the HTML for displaying the login form, which POSTs to the login url\&. When the filter action is "authenticate\-cookie", this filter must validate the http cookie and return a 0 if it is invalid or 1 if it is invalid, in the exit code / close function\&. If the filter action is "authenticate\-post", this filter receives POST\(cqd parameters on standard input, and should write a complete CGI response, preferably with a 302 redirect, and write to output one or more "Set\-Cookie" HTTP headers, each followed by a newline\&.
.sp
.if n \{\
.RS 4
.\}
.nf
Please see `filters/simple\-authentication\&.lua` for a clear example
script that may be modified\&.
.fi
.if n \{\
.RE
.\}
.RE
.RE
.PP
commit filter
.RS 4
This filter is given no arguments\&. The commit message text that is to be filtered is available on standard input and the filtered text is expected on standard output\&.
.RE
.PP
email filter
.RS 4
This filter is given two parameters: the email address of the relevant author and a string indicating the originating page\&. The filter will then receive the text string to format on standard input and is expected to write to standard output the formatted text to be included in the page\&.
.RE
.PP
owner filter
.RS 4
This filter is given no arguments\&. The owner text is available on standard input and the filter is expected to write to standard output\&. The output is included in the Owner column\&.
.RE
.PP
source filter
.RS 4
This filter is given a single parameter: the filename of the source file to filter\&. The filter can use the filename to determine (for example) the syntax highlighting mode\&. The contents of the source file that is to be filtered is available on standard input and the filtered contents is expected on standard output\&.
.RE
.sp
All filters are handed the following environment variables:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
CGIT_REPO_URL (from repo\&.url)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
CGIT_REPO_NAME (from repo\&.name)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
CGIT_REPO_PATH (from repo\&.path)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
CGIT_REPO_OWNER (from repo\&.owner)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
CGIT_REPO_DEFBRANCH (from repo\&.defbranch)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
CGIT_REPO_SECTION (from repo\&.section)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
CGIT_REPO_CLONE_URL (from repo\&.clone\-url)
.RE
.sp
If a setting is not defined for a repository and the corresponding global setting is also not defined (if applicable), then the corresponding environment variable will be unset\&.
.SH "MACRO EXPANSION"
.sp
The following cgitrc options support a simple macro expansion feature, where tokens prefixed with "$" are replaced with the value of a similarly named environment variable:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cache\-root
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
include
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
project\-list
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
scan\-path
.RE
.sp
Macro expansion will also happen on the content of $CGIT_CONFIG, if defined\&.
.sp
One usage of this feature is virtual hosting, which in its simplest form can be accomplished by adding the following line to /etc/cgitrc:
.sp
.if n \{\
.RS 4
.\}
.nf
include=/etc/cgitrc\&.d/$HTTP_HOST
.fi
.if n \{\
.RE
.\}
.sp
The following options are expanded during request processing, and support the environment variables defined in "FILTER API":
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
clone\-url
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
repo\&.clone\-url
.RE
.SH "CACHE"
.sp
All cache ttl values are in minutes\&. Negative ttl values indicate that a page type will never expire, and thus the first time a URL is accessed, the result will be cached indefinitely, even if the underlying git repository changes\&. Conversely, when a ttl value is zero, the cache is disabled for that particular page type, and the page type is never cached\&.
.SH "SIGNATURES"
.sp
Cgit can host \&.asc signatures corresponding to various snapshot formats, through use of git notes\&. For example, the following command may be used to add a signature to a \&.tar\&.xz archive:
.sp
.if n \{\
.RS 4
.\}
.nf
git notes \-\-ref=refs/notes/signatures/tar\&.xz add \-C "$(
gpg \-\-output \- \-\-armor \-\-detach\-sign cgit\-1\&.1\&.tar\&.xz |
git hash\-object \-w \-\-stdin
)" v1\&.1
.fi
.if n \{\
.RE
.\}
.sp
If it is instead desirable to attach a signature of the underlying \&.tar, this will be linked, as a special case, beside a \&.tar\&.* link that does not have its own signature\&. For example, a signature of a tarball of the latest tag might be added with a similar command:
.sp
.if n \{\
.RS 4
.\}
.nf
tag="$(git describe \-\-abbrev=0)"
git notes \-\-ref=refs/notes/signatures/tar add \-C "$(
git archive \-\-format tar \-\-prefix "cgit\-${tag#v}/" "$tag" |
gpg \-\-output \- \-\-armor \-\-detach\-sign |
git hash\-object \-w \-\-stdin
)" "$tag"
.fi
.if n \{\
.RE
.\}
.sp
Since git\-archive(1) is expected to produce stable output between versions, this allows one to generate a long\-term signature of the contents of a given tag\&.
.SH "EXAMPLE CGITRC FILE"
.sp
.if n \{\
.RS 4
.\}
.nf
# Enable caching of up to 1000 output entries
cache\-size=1000
# Specify some default clone urls using macro expansion
clone\-url=git://foo\&.org/$CGIT_REPO_URL git@foo\&.org:$CGIT_REPO_URL
# Specify the css url
css=/css/cgit\&.css
# Show owner on index page
enable\-index\-owner=1
# Allow http transport git clone
enable\-http\-clone=1
# Show extra links for each repository on the index page
enable\-index\-links=1
# Enable blame page and create links to it from tree page
enable\-blame=1
# Enable ASCII art commit history graph on the log pages
enable\-commit\-graph=1
# Show number of affected files per commit on the log pages
enable\-log\-filecount=1
# Show number of added/removed lines per commit on the log pages
enable\-log\-linecount=1
# Sort branches by date
branch\-sort=age
# Add a cgit favicon
favicon=/favicon\&.ico
# Use a custom logo
logo=/img/mylogo\&.png
# Enable statistics per week, month and quarter
max\-stats=quarter
# Set the title and heading of the repository index page
root\-title=example\&.com git repositories
# Set a subheading for the repository index page
root\-desc=tracking the foobar development
# Include some more info about example\&.com on the index page
root\-readme=/var/www/htdocs/about\&.html
# Allow download of tar\&.gz, tar\&.bz2 and zip\-files
snapshots=tar\&.gz tar\&.bz2 zip
##
## List of common mimetypes
##
mimetype\&.gif=image/gif
mimetype\&.html=text/html
mimetype\&.jpg=image/jpeg
mimetype\&.jpeg=image/jpeg
mimetype\&.pdf=application/pdf
mimetype\&.png=image/png
mimetype\&.svg=image/svg+xml
# Highlight source code with python pygments\-based highlighter
source\-filter=/var/www/cgit/filters/syntax\-highlighting\&.py
# Format markdown, restructuredtext, manpages, text files, and html files
# through the right converters
about\-filter=/var/www/cgit/filters/about\-formatting\&.sh
##
## Search for these files in the root of the default branch of repositories
## for coming up with the about page:
##
readme=:README\&.md
readme=:readme\&.md
readme=:README\&.mkd
readme=:readme\&.mkd
readme=:README\&.rst
readme=:readme\&.rst
readme=:README\&.html
readme=:readme\&.html
readme=:README\&.htm
readme=:readme\&.htm
readme=:README\&.txt
readme=:readme\&.txt
readme=:README
readme=:readme
readme=:INSTALL\&.md
readme=:install\&.md
readme=:INSTALL\&.mkd
readme=:install\&.mkd
readme=:INSTALL\&.rst
readme=:install\&.rst
readme=:INSTALL\&.html
readme=:install\&.html
readme=:INSTALL\&.htm
readme=:install\&.htm
readme=:INSTALL\&.txt
readme=:install\&.txt
readme=:INSTALL
readme=:install
##
## List of repositories\&.
## PS: Any repositories listed when section is unset will not be
## displayed under a section heading
## PPS: This list could be kept in a different file (e\&.g\&. \*(Aq/etc/cgitrepos\*(Aq)
## and included like this:
## include=/etc/cgitrepos
##
repo\&.url=foo
repo\&.path=/pub/git/foo\&.git
repo\&.desc=the master foo repository
repo\&.owner=fooman@example\&.com
repo\&.readme=info/web/about\&.html
repo\&.url=bar
repo\&.path=/pub/git/bar\&.git
repo\&.desc=the bars for your foo
repo\&.owner=barman@example\&.com
repo\&.readme=info/web/about\&.html
# The next repositories will be displayed under the \*(Aqextras\*(Aq heading
section=extras
repo\&.url=baz
repo\&.path=/pub/git/baz\&.git
repo\&.desc=a set of extensions for bar users
repo\&.url=wiz
repo\&.path=/pub/git/wiz\&.git
repo\&.desc=the wizard of foo
# Add some mirrored repositories
section=mirrors
repo\&.url=git
repo\&.path=/pub/git/git\&.git
repo\&.desc=the dscm
repo\&.url=linux
repo\&.path=/pub/git/linux\&.git
repo\&.desc=the kernel
# Disable adhoc downloads of this repo
repo\&.snapshots=0
# Disable line\-counts for this repo
repo\&.enable\-log\-linecount=0
# Restrict the max statistics period for this repo
repo\&.max\-stats=month
.fi
.if n \{\
.RE
.\}
.SH "BUGS"
.sp
Comments currently cannot appear on the same line as a setting; the comment will be included as part of the value\&. E\&.g\&. this line:
.sp
.if n \{\
.RS 4
.\}
.nf
robots=index # allow indexing
.fi
.if n \{\
.RE
.\}
.sp
will generate the following html element:
.sp
.if n \{\
.RS 4
.\}
.nf
.fi
.if n \{\
.RE
.\}
.SH "AUTHOR"
.sp
Lars Hjemli Jason A\&. Donenfeld