|  | <!DOCTYPE html> | 
|  | <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> | 
|  | <head> | 
|  | <meta charset="UTF-8"/> | 
|  | <meta http-equiv="X-UA-Compatible" content="IE=edge"/> | 
|  | <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | 
|  | <meta name="generator" content="Asciidoctor 2.0.23"/> | 
|  | <title>gitweb.conf(5)</title> | 
|  | <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/> | 
|  | <style> | 
|  | /*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */ | 
|  | /* Uncomment the following line when using as a custom stylesheet */ | 
|  | /* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */ | 
|  | html{font-family:sans-serif;-webkit-text-size-adjust:100%} | 
|  | a{background:none} | 
|  | a:focus{outline:thin dotted} | 
|  | a:active,a:hover{outline:0} | 
|  | h1{font-size:2em;margin:.67em 0} | 
|  | b,strong{font-weight:bold} | 
|  | abbr{font-size:.9em} | 
|  | abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none} | 
|  | dfn{font-style:italic} | 
|  | hr{height:0} | 
|  | mark{background:#ff0;color:#000} | 
|  | code,kbd,pre,samp{font-family:monospace;font-size:1em} | 
|  | pre{white-space:pre-wrap} | 
|  | q{quotes:"\201C" "\201D" "\2018" "\2019"} | 
|  | small{font-size:80%} | 
|  | sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} | 
|  | sup{top:-.5em} | 
|  | sub{bottom:-.25em} | 
|  | img{border:0} | 
|  | svg:not(:root){overflow:hidden} | 
|  | figure{margin:0} | 
|  | audio,video{display:inline-block} | 
|  | audio:not([controls]){display:none;height:0} | 
|  | fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} | 
|  | legend{border:0;padding:0} | 
|  | button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} | 
|  | button,input{line-height:normal} | 
|  | button,select{text-transform:none} | 
|  | button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer} | 
|  | button[disabled],html input[disabled]{cursor:default} | 
|  | input[type=checkbox],input[type=radio]{padding:0} | 
|  | button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} | 
|  | textarea{overflow:auto;vertical-align:top} | 
|  | table{border-collapse:collapse;border-spacing:0} | 
|  | *,::before,::after{box-sizing:border-box} | 
|  | html,body{font-size:100%} | 
|  | body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} | 
|  | a:hover{cursor:pointer} | 
|  | img,object,embed{max-width:100%;height:auto} | 
|  | object,embed{height:100%} | 
|  | img{-ms-interpolation-mode:bicubic} | 
|  | .left{float:left!important} | 
|  | .right{float:right!important} | 
|  | .text-left{text-align:left!important} | 
|  | .text-right{text-align:right!important} | 
|  | .text-center{text-align:center!important} | 
|  | .text-justify{text-align:justify!important} | 
|  | .hide{display:none} | 
|  | img,object,svg{display:inline-block;vertical-align:middle} | 
|  | textarea{height:auto;min-height:50px} | 
|  | select{width:100%} | 
|  | .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} | 
|  | div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0} | 
|  | a{color:#2156a5;text-decoration:underline;line-height:inherit} | 
|  | a:hover,a:focus{color:#1d4b8f} | 
|  | a img{border:0} | 
|  | p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} | 
|  | p aside{font-size:.875em;line-height:1.35;font-style:italic} | 
|  | h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} | 
|  | h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} | 
|  | h1{font-size:2.125em} | 
|  | h2{font-size:1.6875em} | 
|  | h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} | 
|  | h4,h5{font-size:1.125em} | 
|  | h6{font-size:1em} | 
|  | hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em} | 
|  | em,i{font-style:italic;line-height:inherit} | 
|  | strong,b{font-weight:bold;line-height:inherit} | 
|  | small{font-size:60%;line-height:inherit} | 
|  | code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} | 
|  | ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} | 
|  | ul,ol{margin-left:1.5em} | 
|  | ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0} | 
|  | ul.circle{list-style-type:circle} | 
|  | ul.disc{list-style-type:disc} | 
|  | ul.square{list-style-type:square} | 
|  | ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit} | 
|  | ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} | 
|  | dl dt{margin-bottom:.3125em;font-weight:bold} | 
|  | dl dd{margin-bottom:1.25em} | 
|  | blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} | 
|  | blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} | 
|  | @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} | 
|  | h1{font-size:2.75em} | 
|  | h2{font-size:2.3125em} | 
|  | h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} | 
|  | h4{font-size:1.4375em}} | 
|  | table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal} | 
|  | table thead,table tfoot{background:#f7f8f7} | 
|  | table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} | 
|  | table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} | 
|  | table tr.even,table tr.alt{background:#f8f8f7} | 
|  | table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6} | 
|  | h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} | 
|  | h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} | 
|  | .center{margin-left:auto;margin-right:auto} | 
|  | .stretch{width:100%} | 
|  | .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table} | 
|  | .clearfix::after,.float-group::after{clear:both} | 
|  | :not(pre).nobreak{word-wrap:normal} | 
|  | :not(pre).nowrap{white-space:nowrap} | 
|  | :not(pre).pre-wrap{white-space:pre-wrap} | 
|  | :not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed} | 
|  | pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed} | 
|  | pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit} | 
|  | pre>code{display:block} | 
|  | pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal} | 
|  | em em{font-style:normal} | 
|  | strong strong{font-weight:400} | 
|  | .keyseq{color:rgba(51,51,51,.8)} | 
|  | kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} | 
|  | .keyseq kbd:first-child{margin-left:0} | 
|  | .keyseq kbd:last-child{margin-right:0} | 
|  | .menuseq,.menuref{color:#000} | 
|  | .menuseq b:not(.caret),.menuref{font-weight:inherit} | 
|  | .menuseq{word-spacing:-.02em} | 
|  | .menuseq b.caret{font-size:1.25em;line-height:.8} | 
|  | .menuseq i.caret{font-weight:bold;text-align:center;width:.45em} | 
|  | b.button::before,b.button::after{position:relative;top:-1px;font-weight:400} | 
|  | b.button::before{content:"[";padding:0 3px 0 2px} | 
|  | b.button::after{content:"]";padding:0 2px 0 3px} | 
|  | p a>code:hover{color:rgba(0,0,0,.9)} | 
|  | #header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} | 
|  | #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table} | 
|  | #header::after,#content::after,#footnotes::after,#footer::after{clear:both} | 
|  | #content{margin-top:1.25em} | 
|  | #content::before{content:none} | 
|  | #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} | 
|  | #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf} | 
|  | #header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px} | 
|  | #header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap} | 
|  | #header .details span:first-child{margin-left:-.125em} | 
|  | #header .details span.email a{color:rgba(0,0,0,.85)} | 
|  | #header .details br{display:none} | 
|  | #header .details br+span::before{content:"\00a0\2013\00a0"} | 
|  | #header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} | 
|  | #header .details br+span#revremark::before{content:"\00a0|\00a0"} | 
|  | #header #revnumber{text-transform:capitalize} | 
|  | #header #revnumber::after{content:"\00a0"} | 
|  | #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} | 
|  | #toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em} | 
|  | #toc>ul{margin-left:.125em} | 
|  | #toc ul.sectlevel0>li>a{font-style:italic} | 
|  | #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} | 
|  | #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} | 
|  | #toc li{line-height:1.3334;margin-top:.3334em} | 
|  | #toc a{text-decoration:none} | 
|  | #toc a:active{text-decoration:underline} | 
|  | #toctitle{color:#7a2518;font-size:1.2em} | 
|  | @media screen and (min-width:768px){#toctitle{font-size:1.375em} | 
|  | body.toc2{padding-left:15em;padding-right:0} | 
|  | body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px} | 
|  | #toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} | 
|  | #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} | 
|  | #toc.toc2>ul{font-size:.9em;margin-bottom:0} | 
|  | #toc.toc2 ul ul{margin-left:0;padding-left:1em} | 
|  | #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} | 
|  | body.toc2.toc-right{padding-left:0;padding-right:15em} | 
|  | body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}} | 
|  | @media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} | 
|  | #toc.toc2{width:20em} | 
|  | #toc.toc2 #toctitle{font-size:1.375em} | 
|  | #toc.toc2>ul{font-size:.95em} | 
|  | #toc.toc2 ul ul{padding-left:1.25em} | 
|  | body.toc2.toc-right{padding-left:0;padding-right:20em}} | 
|  | #content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px} | 
|  | #content #toc>:first-child{margin-top:0} | 
|  | #content #toc>:last-child{margin-bottom:0} | 
|  | #footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em} | 
|  | #footer-text{color:hsla(0,0%,100%,.8);line-height:1.44} | 
|  | #content{margin-bottom:.625em} | 
|  | .sect1{padding-bottom:.625em} | 
|  | @media screen and (min-width:768px){#content{margin-bottom:1.25em} | 
|  | .sect1{padding-bottom:1.25em}} | 
|  | .sect1:last-child{padding-bottom:0} | 
|  | .sect1+.sect1{border-top:1px solid #e7e7e9} | 
|  | #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} | 
|  | #content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} | 
|  | #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} | 
|  | #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} | 
|  | #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} | 
|  | details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} | 
|  | details{margin-left:1.25rem} | 
|  | details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent} | 
|  | details>summary::-webkit-details-marker{display:none} | 
|  | details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)} | 
|  | details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)} | 
|  | details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem} | 
|  | .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} | 
|  | table.tableblock.fit-content>caption.title{white-space:nowrap;width:0} | 
|  | .paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)} | 
|  | .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} | 
|  | .admonitionblock>table td.icon{text-align:center;width:80px} | 
|  | .admonitionblock>table td.icon img{max-width:none} | 
|  | .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} | 
|  | .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere} | 
|  | .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} | 
|  | .exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px} | 
|  | .sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px} | 
|  | .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} | 
|  | .exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0} | 
|  | .exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} | 
|  | .literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em} | 
|  | @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}} | 
|  | @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}} | 
|  | .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8} | 
|  | .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)} | 
|  | .listingblock>.content{position:relative} | 
|  | .listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5} | 
|  | .listingblock:hover code[data-lang]::before{display:block} | 
|  | .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5} | 
|  | .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"} | 
|  | .listingblock pre.highlightjs{padding:0} | 
|  | .listingblock pre.highlightjs>code{padding:1em;border-radius:4px} | 
|  | .listingblock pre.prettyprint{border-width:0} | 
|  | .prettyprint{background:#f7f7f8} | 
|  | pre.prettyprint .linenums{line-height:1.45;margin-left:2em} | 
|  | pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0} | 
|  | pre.prettyprint li code[data-lang]::before{opacity:1} | 
|  | pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none} | 
|  | table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none} | 
|  | table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal} | 
|  | table.linenotable td.code{padding-left:.75em} | 
|  | table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} | 
|  | pre.pygments span.linenos{display:inline-block;margin-right:.75em} | 
|  | .quoteblock{margin:0 1em 1.25em 1.5em;display:table} | 
|  | .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em} | 
|  | .quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} | 
|  | .quoteblock blockquote{margin:0;padding:0;border:0} | 
|  | .quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} | 
|  | .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} | 
|  | .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right} | 
|  | .verseblock{margin:0 1em 1.25em} | 
|  | .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} | 
|  | .verseblock pre strong{font-weight:400} | 
|  | .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} | 
|  | .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} | 
|  | .quoteblock .attribution br,.verseblock .attribution br{display:none} | 
|  | .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} | 
|  | .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none} | 
|  | .quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0} | 
|  | .quoteblock.abstract{margin:0 1em 1.25em;display:block} | 
|  | .quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center} | 
|  | .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf} | 
|  | .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0} | 
|  | .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem} | 
|  | .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0} | 
|  | p.tableblock:last-child{margin-bottom:0} | 
|  | td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere} | 
|  | td.tableblock>.content>:last-child{margin-bottom:-1.25em} | 
|  | table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} | 
|  | table.grid-all>*>tr>*{border-width:1px} | 
|  | table.grid-cols>*>tr>*{border-width:0 1px} | 
|  | table.grid-rows>*>tr>*{border-width:1px 0} | 
|  | table.frame-all{border-width:1px} | 
|  | table.frame-ends{border-width:1px 0} | 
|  | table.frame-sides{border-width:0 1px} | 
|  | table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0} | 
|  | table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0} | 
|  | table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0} | 
|  | table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0} | 
|  | table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7} | 
|  | th.halign-left,td.halign-left{text-align:left} | 
|  | th.halign-right,td.halign-right{text-align:right} | 
|  | th.halign-center,td.halign-center{text-align:center} | 
|  | th.valign-top,td.valign-top{vertical-align:top} | 
|  | th.valign-bottom,td.valign-bottom{vertical-align:bottom} | 
|  | th.valign-middle,td.valign-middle{vertical-align:middle} | 
|  | table thead th,table tfoot th{font-weight:bold} | 
|  | tbody tr th{background:#f7f8f7} | 
|  | tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} | 
|  | p.tableblock>code:only-child{background:none;padding:0} | 
|  | p.tableblock{font-size:1em} | 
|  | ol{margin-left:1.75em} | 
|  | ul li ol{margin-left:1.5em} | 
|  | dl dd{margin-left:1.125em} | 
|  | dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} | 
|  | li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} | 
|  | ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} | 
|  | ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} | 
|  | ul.unstyled,ol.unstyled{margin-left:0} | 
|  | li>p:empty:only-child::before{content:"";display:inline-block} | 
|  | ul.checklist>li>p:first-child{margin-left:-1em} | 
|  | ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em} | 
|  | ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em} | 
|  | ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em} | 
|  | ul.inline>li{margin-left:1.25em} | 
|  | .unstyled dl dt{font-weight:400;font-style:normal} | 
|  | ol.arabic{list-style-type:decimal} | 
|  | ol.decimal{list-style-type:decimal-leading-zero} | 
|  | 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} | 
|  | ol.lowergreek{list-style-type:lower-greek} | 
|  | .hdlist>table,.colist>table{border:0;background:none} | 
|  | .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} | 
|  | td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} | 
|  | td.hdlist1{font-weight:bold;padding-bottom:1.25em} | 
|  | td.hdlist2{word-wrap:anywhere} | 
|  | .literalblock+.colist,.listingblock+.colist{margin-top:-.5em} | 
|  | .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top} | 
|  | .colist td:not([class]):first-child img{max-width:none} | 
|  | .colist td:not([class]):last-child{padding:.25em 0} | 
|  | .thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd} | 
|  | .imageblock.left{margin:.25em .625em 1.25em 0} | 
|  | .imageblock.right{margin:.25em 0 1.25em .625em} | 
|  | .imageblock>.title{margin-bottom:0} | 
|  | .imageblock.thumb,.imageblock.th{border-width:6px} | 
|  | .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} | 
|  | .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} | 
|  | .image.left{margin-right:.625em} | 
|  | .image.right{margin-left:.625em} | 
|  | a.image{text-decoration:none;display:inline-block} | 
|  | a.image object{pointer-events:none} | 
|  | sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} | 
|  | sup.footnote a,sup.footnoteref a{text-decoration:none} | 
|  | sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline} | 
|  | #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} | 
|  | #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0} | 
|  | #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em} | 
|  | #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em} | 
|  | #footnotes .footnote:last-of-type{margin-bottom:0} | 
|  | #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} | 
|  | div.unbreakable{page-break-inside:avoid} | 
|  | .big{font-size:larger} | 
|  | .small{font-size:smaller} | 
|  | .underline{text-decoration:underline} | 
|  | .overline{text-decoration:overline} | 
|  | .line-through{text-decoration:line-through} | 
|  | .aqua{color:#00bfbf} | 
|  | .aqua-background{background:#00fafa} | 
|  | .black{color:#000} | 
|  | .black-background{background:#000} | 
|  | .blue{color:#0000bf} | 
|  | .blue-background{background:#0000fa} | 
|  | .fuchsia{color:#bf00bf} | 
|  | .fuchsia-background{background:#fa00fa} | 
|  | .gray{color:#606060} | 
|  | .gray-background{background:#7d7d7d} | 
|  | .green{color:#006000} | 
|  | .green-background{background:#007d00} | 
|  | .lime{color:#00bf00} | 
|  | .lime-background{background:#00fa00} | 
|  | .maroon{color:#600000} | 
|  | .maroon-background{background:#7d0000} | 
|  | .navy{color:#000060} | 
|  | .navy-background{background:#00007d} | 
|  | .olive{color:#606000} | 
|  | .olive-background{background:#7d7d00} | 
|  | .purple{color:#600060} | 
|  | .purple-background{background:#7d007d} | 
|  | .red{color:#bf0000} | 
|  | .red-background{background:#fa0000} | 
|  | .silver{color:#909090} | 
|  | .silver-background{background:#bcbcbc} | 
|  | .teal{color:#006060} | 
|  | .teal-background{background:#007d7d} | 
|  | .white{color:#bfbfbf} | 
|  | .white-background{background:#fafafa} | 
|  | .yellow{color:#bfbf00} | 
|  | .yellow-background{background:#fafa00} | 
|  | span.icon>.fa{cursor:default} | 
|  | a span.icon>.fa{cursor:inherit} | 
|  | .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} | 
|  | .admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c} | 
|  | .admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} | 
|  | .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900} | 
|  | .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400} | 
|  | .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000} | 
|  | .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} | 
|  | .conum[data-value] *{color:#fff!important} | 
|  | .conum[data-value]+b{display:none} | 
|  | .conum[data-value]::after{content:attr(data-value)} | 
|  | pre .conum[data-value]{position:relative;top:-.125em} | 
|  | b.conum *{color:inherit!important} | 
|  | .conum:not([data-value]):empty{display:none} | 
|  | dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} | 
|  | h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em} | 
|  | p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} | 
|  | p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem} | 
|  | p{margin-bottom:1.25rem} | 
|  | .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} | 
|  | .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc} | 
|  | .print-only{display:none!important} | 
|  | @page{margin:1.25cm .75cm} | 
|  | @media print{*{box-shadow:none!important;text-shadow:none!important} | 
|  | html{font-size:80%} | 
|  | a{color:inherit!important;text-decoration:underline!important} | 
|  | a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} | 
|  | a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} | 
|  | abbr[title]{border-bottom:1px dotted} | 
|  | abbr[title]::after{content:" (" attr(title) ")"} | 
|  | pre,blockquote,tr,img,object,svg{page-break-inside:avoid} | 
|  | thead{display:table-header-group} | 
|  | svg{max-width:100%} | 
|  | p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} | 
|  | h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} | 
|  | #header,#content,#footnotes,#footer{max-width:none} | 
|  | #toc,.sidebarblock,.exampleblock>.content{background:none!important} | 
|  | #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important} | 
|  | body.book #header{text-align:center} | 
|  | body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em} | 
|  | body.book #header .details{border:0!important;display:block;padding:0!important} | 
|  | body.book #header .details span:first-child{margin-left:0!important} | 
|  | body.book #header .details br{display:block} | 
|  | body.book #header .details br+span::before{content:none!important} | 
|  | body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} | 
|  | body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} | 
|  | .listingblock code[data-lang]::before{display:block} | 
|  | #footer{padding:0 .9375em} | 
|  | .hide-on-print{display:none!important} | 
|  | .print-only{display:block!important} | 
|  | .hide-for-print{display:none!important} | 
|  | .show-for-print{display:inherit!important}} | 
|  | @media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem} | 
|  | .sect1{padding:0!important} | 
|  | .sect1+.sect1{border:0} | 
|  | #footer{background:none} | 
|  | #footer-text{color:rgba(0,0,0,.6);font-size:.9em}} | 
|  | @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}} | 
|  | </style> | 
|  | <style> | 
|  | pre>code { | 
|  | display: inline; | 
|  | } | 
|  | </style> | 
|  | </head> | 
|  | <body class="manpage"> | 
|  | <div id="header"> | 
|  | <h1>gitweb.conf(5) Manual Page</h1> | 
|  | <h2 id="_name">NAME</h2> | 
|  | <div class="sectionbody"> | 
|  | <p>gitweb.conf - Gitweb (Git web interface) configuration file</p> | 
|  | </div> | 
|  | </div> | 
|  | <div id="content"> | 
|  | <div class="sect1"> | 
|  | <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> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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 "<code>our</code> <code>$variable</code> <code>=</code> <code>value</code>"; 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="listingblock"> | 
|  | <div class="content"> | 
|  | <pre># gitweb configuration file for http://git.example.org | 
|  | # | 
|  | our $projectroot = "/srv/git"; # FHS recommendation | 
|  | our $site_name = 'Example.org >> Repos';</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> — 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> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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 | 
|  | <code>/etc/gitweb-common.conf</code>),</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 exist | 
|  | then fallback system-wide configuration file (defaults to <code>/etc/gitweb.conf</code>).</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 <code>GITWEB_CONFIG_COMMON</code>, <code>GITWEB_CONFIG_SYSTEM</code> | 
|  | and <code>GITWEB_CONFIG</code>.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>You can also override locations of gitweb configuration files during | 
|  | runtime by setting the following environment variables: | 
|  | <code>GITWEB_CONFIG_COMMON</code>, <code>GITWEB_CONFIG_SYSTEM</code> and <code>GITWEB_CONFIG</code> | 
|  | 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 | 
|  | <code>our</code> qualifier (as in "<code>our</code> <code>$variable</code> <code>=</code> <em><value></em>;") 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 | 
|  | <code>/etc/gitweb-gitolite.conf</code>.  To include it, put</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>read_config_file("/etc/gitweb-gitolite.conf");</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 <code>%features</code> variable (see also "Configuring gitweb | 
|  | features" section below).</p> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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 — if that is the case, this fact is put | 
|  | in their description.  See gitweb’s <em>INSTALL</em> file for instructions on building | 
|  | and installing gitweb.</p> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_location_of_repositories">Location of repositories</h3> | 
|  | <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 <code>$projectroot/$project</code>.  Set to | 
|  | <code>$GITWEB_PROJECTROOT</code> during installation.  This variable has to be | 
|  | set correctly for gitweb to find repositories.</p> | 
|  | <div class="paragraph"> | 
|  | <p>For example, if <code>$projectroot</code> is set to "/srv/git" by putting the following | 
|  | in gitweb config file:</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>our $projectroot = "/srv/git";</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>then</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>http://git.example.com/gitweb.cgi?p=foo/bar.git</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>and its path_info based equivalent</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>http://git.example.com/gitweb.cgi/foo/bar.git</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>will map to the path <code>/srv/git/foo/bar.git</code> 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><URI-encoded filesystem path to repository> SP <URI-encoded repository owner></pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>The default value of this variable is determined by the <code>GITWEB_LIST</code> | 
|  | makefile variable at installation time.  If this variable is empty, gitweb | 
|  | will fall back to scanning the <code>$projectroot</code> directory for repositories.</p> | 
|  | </div> | 
|  | </dd> | 
|  | <dt class="hdlist1">$project_maxdepth</dt> | 
|  | <dd> | 
|  | <p>If <code>$projects_list</code> variable is unset, gitweb will recursively | 
|  | scan filesystem for Git repositories.  The <code>$project_maxdepth</code> | 
|  | is used to limit traversing depth, relative to <code>$projectroot</code> | 
|  | (starting point); it means that directories which are further | 
|  | from <code>$projectroot</code> than <code>$project_maxdepth</code> 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 <code>GITWEB_PROJECT_MAXDEPTH</code>, 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 <code>GITWEB_EXPORT_OK</code>.  This path is | 
|  | relative to <code>GIT_DIR</code>.  <a href="git-daemon.html">git-daemon(1)</a> uses <em>git-daemon-export-ok</em>, | 
|  | unless started with <code>--export-all</code>.  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>our $export_auth_hook = sub { return -e "$_[0]/git-daemon-export-ok"; };</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>though the above might be done by using <code>$export_ok</code> instead</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>our $export_ok = "git-daemon-export-ok";</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 <code>$export_ok</code> file decide if repository is | 
|  | available and not only if it is shown.  If <code>$projects_list</code> points to | 
|  | file with list of project, only those repositories listed would be | 
|  | available for gitweb.  Can be set during building gitweb via | 
|  | <code>GITWEB_STRICT_EXPORT</code>.  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> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_finding_files">Finding files</h3> | 
|  | <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 <code>$GIT_BINDIR/git</code>, which | 
|  | in turn is by default set to <code>$</code>(<code>bindir</code>)<code>/git</code>.  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 <code>/etc/mime.types</code>.  <strong>NOTE</strong> that this path, if relative, is taken | 
|  | as relative to the current Git repository, not to CGI script.  If unset, | 
|  | only <code>/etc/mime.types</code> 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://andre-simon.de/zip/download.php" class="bare">http://andre-simon.de/zip/download.php</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’s PATH. | 
|  | Note that <em>highlight</em> feature must be set for gitweb to actually | 
|  | use syntax highlighting.</p> | 
|  | <div class="paragraph"> | 
|  | <p><strong>NOTE</strong>: 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 <code>%highlight_basename</code> and | 
|  | <code>%highlight_ext</code>, 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 <code>--syntax</code> <em><syntax></em> | 
|  | to "highlight".  The last priority is the "highlight" configuration of | 
|  | <code>Shebang</code> 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.</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>our %highlight_ext; | 
|  | $highlight_ext{'phtml'} = 'php';</pre> | 
|  | </div> | 
|  | </div> | 
|  | </dd> | 
|  | </dl> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_links_and_their_targets">Links and their targets</h3> | 
|  | <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 <code>@stylesheets</code> | 
|  | 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 <code>site</code> stylesheet by putting</p> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>push @stylesheets, "gitweb-site.css";</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’s standard stylesheet.  The default | 
|  | URI of gitweb stylesheet can be set at build time using the <code>GITWEB_CSS</code> | 
|  | makefile variable.  Its default value is <code>static/gitweb.css</code> | 
|  | (or <code>static/gitweb.min.css</code> if the <code>CSSMIN</code> 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 <code>$stylesheet</code> configuration variable, which was | 
|  | used by older gitweb.  If <code>$stylesheet</code> 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 <code>GITWEB_LOGO</code> variable | 
|  | By default set to <code>static/git-logo.png</code>.</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’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 <code>GITWEB_FAVICON</code> variable. | 
|  | By default set to <code>static/git-favicon.png</code>.</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 <code>GITWEB_JS</code> build-time configuration variable.</p> | 
|  | <div class="paragraph"> | 
|  | <p>The default value is either <code>static/gitweb.js</code>, or <code>static/gitweb.min.js</code> if | 
|  | the <code>JSMIN</code> 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 <code>$my_uri</code> variable, or to "/" if <code>$my_uri</code> 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 <code>$home_link</code> | 
|  | (usually the main gitweb page, which contains the projects list).  It is | 
|  | used as the first component of gitweb’s "breadcrumb trail": | 
|  | <em><home-link></em> <code>/</code> <em><project></em> <code>/</code> <em><action></em>.  Can be set at build time using | 
|  | the <code>GITWEB_HOME_LINK_STR</code> 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.</p> | 
|  | </dd> | 
|  | <dt class="hdlist1">@extra_breadcrumbs</dt> | 
|  | <dd> | 
|  | <p>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 <code>$home_link_str</code>) and element | 
|  | 1 is the target URL (equivalent to <code>$home_link</code>).</p> | 
|  | <div class="paragraph"> | 
|  | <p>For example, the following setting produces a breadcrumb trail like | 
|  | "home / dev / projects / …​" where "projects" is the home link.</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>    our @extra_breadcrumbs = ( | 
|  | [ 'home' => 'https://www.example.org/' ], | 
|  | [ 'dev'  => 'https://dev.example.org/' ], | 
|  | );</pre> | 
|  | </div> | 
|  | </div> | 
|  | </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="https://git-scm.com" class="bare">https://git-scm.com</a>; in the past, they pointed | 
|  | to Git documentation at <a href="https://www.kernel.org" class="bare">https://www.kernel.org</a>.</p> | 
|  | </dd> | 
|  | </dl> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_changing_gitwebs_look">Changing gitweb’s look</h3> | 
|  | <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 <code>SERVER_NAME</code> | 
|  | <code>CGI</code> 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 <code>GITWEB_SITENAME</code> at build time.  Unset by default.</p> | 
|  | </div> | 
|  | </dd> | 
|  | <dt class="hdlist1">$site_html_head_string</dt> | 
|  | <dd> | 
|  | <p>HTML snippet to be included in the <head> section of each page. | 
|  | Can be set using <code>GITWEB_SITE_HTML_HEAD_STRING</code> at build time. | 
|  | No default value.</p> | 
|  | </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 <code>GITWEB_SITE_HEADER</code> 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 <code>GITWEB_SITE_FOOTER</code> 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 <code>GITWEB_HOMETEXT</code> 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’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 <code>$projectroot</code>), "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> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_changing_gitwebs_behavior">Changing gitweb’s behavior</h3> | 
|  | <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’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 <code>$mimetypes_file</code> (if set and file exists) | 
|  | and <code>/etc/mime.types</code> 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’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> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_some_optional_features_and_policies">Some optional features and policies</h3> | 
|  | <div class="paragraph"> | 
|  | <p>Most of features are configured via <code>%feature</code> 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 "<code>$git_base_url/$project</code>", | 
|  | for each element of this list. You can set up multiple base URLs | 
|  | (for example one for <code>git://</code> protocol, and one for <code>http://</code> | 
|  | protocol).</p> | 
|  | <div class="paragraph"> | 
|  | <p>Note that per repository configuration can be set in <code>$GIT_DIR/cloneurl</code> | 
|  | file, or as values of multi-value <code>gitweb.url</code> configuration variable in | 
|  | project config.  Per-repository configuration takes precedence over value | 
|  | composed from <code>@git_base_url_list</code> 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 <code>GITWEB_BASE_URL</code> 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.</p> | 
|  | </div> | 
|  | </dd> | 
|  | <dt class="hdlist1">$projects_list_group_categories</dt> | 
|  | <dd> | 
|  | <p>Whether to enable the grouping of projects by category on the project | 
|  | list page. The category of a project is determined by the | 
|  | <code>$GIT_DIR/category</code> file or the <code>gitweb.category</code> variable in each | 
|  | repository’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 <code>$projects_list_group_categories</code> | 
|  | 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’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 <code>/proc/loadavg</code>; the load there is the number of active | 
|  | tasks on the system — processes that are actually running — averaged | 
|  | over the last minute.</p> | 
|  | <div class="paragraph"> | 
|  | <p>Set <code>$maxload</code> to undefined value (<code>undef</code>) to turn this feature off. | 
|  | The default value is 300.</p> | 
|  | </div> | 
|  | </dd> | 
|  | <dt class="hdlist1">$omit_age_column</dt> | 
|  | <dd> | 
|  | <p>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.</p> | 
|  | </dd> | 
|  | <dt class="hdlist1">$omit_owner</dt> | 
|  | <dd> | 
|  | <p>If true prevents displaying information about repository owner.</p> | 
|  | </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>our $per_request_config = sub { | 
|  | $ENV{GL_USER} = $cgi->remote_user || "gitweb"; | 
|  | };</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>If <code>$per_request_config</code> 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>: <code>$my_url</code>, <code>$my_uri</code>, and <code>$base_url</code> 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> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_other_variables">Other variables</h3> | 
|  | <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>our $version .= " with caching";</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 | 
|  | <code>$per_request_config</code> 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. <code>$logo</code>, <code>$favicon</code>, <code>@stylesheets</code> if they are relative URLs), | 
|  | needed and used <em><base href="$base_url"></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 <code>$per_request_config</code> if you need to override it anyway.</p> | 
|  | </dd> | 
|  | </dl> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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 | 
|  | <code>%feature</code> hash.  Names of gitweb features are keys of this hash.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Each <code>%feature</code> hash element is a hash reference and has the following | 
|  | structure:</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>"<feature-name>" => { | 
|  | "sub" => <feature-sub-(subroutine)>, | 
|  | "override" => <allow-override-(boolean)>, | 
|  | "default" => [ <options>... ] | 
|  | },</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Some features cannot be overridden per project.  For those | 
|  | features the structure of appropriate <code>%feature</code> hash element has a simpler | 
|  | form:</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>"<feature-name>" => { | 
|  | "override" => 0, | 
|  | "default" => [ <options>... ] | 
|  | },</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’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 [<code>1</code>], and torn it off by setting it to | 
|  | [<code>0</code>].  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. [].</p> | 
|  | </div> | 
|  | </dd> | 
|  | <dt class="hdlist1">override</dt> | 
|  | <dd> | 
|  | <p>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.</p> | 
|  | <div class="paragraph"> | 
|  | <p>Usually given "<feature>" is configurable via the <code>gitweb.</code><em><feature></em> | 
|  | config variable in the per-repository Git configuration file.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p><strong>Note</strong> that no feature is overridable 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’t need to ever change it in gitweb config file.</p> | 
|  | </div> | 
|  | </dd> | 
|  | </dl> | 
|  | </div> | 
|  | <div class="sect2"> | 
|  | <h3 id="_features_in_feature">Features in <code>%feature</code></h3> | 
|  | <div class="paragraph"> | 
|  | <p>The gitweb features that are configurable via <code>%feature</code> 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’s <code>gitweb.blame</code> 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 <code>%known_snapshot_formats</code> 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’s <code>gitweb.snapshot</code> 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’s <code>gitweb.grep</code> 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 <code>-S</code><em><string></em> 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’s <code>gitweb.pickaxe</code> 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 <code>ls</code> <code>-l</code> does; see description of | 
|  | <code>-l</code> 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’s <code>gitweb.showSizes</code> 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’s <code>gitweb.patches</code> 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 <code>gitweb/INSTALL</code> for more details.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>This feature can be configured on a per-repository basis via | 
|  | repository’s <code>gitweb.avatar</code> configuration variable.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>See also <code>%avatar_size</code> 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 <code>@stylesheets</code>), it may be appropriate to change | 
|  | these values.</p> | 
|  | </div> | 
|  | </dd> | 
|  | <dt class="hdlist1">email-privacy</dt> | 
|  | <dd> | 
|  | <p>Redact e-mail addresses from the generated HTML, etc. content. | 
|  | This obscures e-mail addresses retrieved from the author/committer | 
|  | and comment sections of the Git log. | 
|  | It is meant to hinder web crawlers that harvest and abuse addresses. | 
|  | Such crawlers may not respect robots.txt. | 
|  | Note that users and user tools also see the addresses as redacted. | 
|  | If Gitweb is not the final step in a workflow then subsequent steps | 
|  | may misbehave because of the redacted information they receive. | 
|  | Disabled by default.</p> | 
|  | </dd> | 
|  | <dt class="hdlist1">highlight</dt> | 
|  | <dd> | 
|  | <p>Server-side syntax highlight support in "blob" view.  It requires | 
|  | <code>$highlight_bin</code> 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’s <code>gitweb.highlight</code> 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’s <code>gitweb.remote_heads</code> 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 | 
|  | <code>--author</code>, <code>--committer</code> and <code>--grep</code> 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 <code>$projname.git</code>, projects in the | 
|  | <code>$projname/</code> directory and its subdirectories will not be | 
|  | shown in the main projects list.  Instead, a '+' mark is shown | 
|  | next to <code>$projname</code>, which links to a "forks" view that lists all | 
|  | the forks (all projects in <code>$projname/</code> 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 (<code>$projects_list</code> 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 | 
|  | ("<em><label></em>", "<em><link></em>", "<em><position></em>") where "position" is the label | 
|  | after which to insert the link, "link" is a format string where <code>%n</code> | 
|  | expands to the project name, <code>%f</code> to the project path within the | 
|  | filesystem (i.e. "$projectroot/$project"), <code>%h</code> to the current hash | 
|  | ('h' gitweb parameter) and <code>%b</code> to the current hash base | 
|  | ('hb' gitweb parameter); <code>%%</code> expands to '%'.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>For example, at the time this page was written, the <a href="https://repo.or.cz" class="bare">https://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>$feature{'actions'}{'default'} = | 
|  | [ ('graphiclog', '/git-browser/by-commit.html?r=%n', 'summary')];</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>This adds a link titled "graphiclog" after the "summary" link, leading to | 
|  | <code>git-browser</code> script, passing <code>r=</code><em><project></em> 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 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.</p> | 
|  | <div class="paragraph"> | 
|  | <p>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: [].</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Typical gitweb config files will only change starting (default) time zone, | 
|  | and leave other elements at their default values:</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>$feature{'javascript-timezone'}{'default'}[0] = "utc";</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>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".</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Project specific override is not supported.</p> | 
|  | </div> | 
|  | </dd> | 
|  | <dt class="hdlist1">extra-branch-refs</dt> | 
|  | <dd> | 
|  | <p>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:</p> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>$feature{'extra-branch-refs'}{'default'} = | 
|  | ['sandbox', 'wip', 'other'];</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>This feature can be configured on per-repository basis after setting | 
|  | $feature{<em>extra-branch-refs</em>}{<em>override</em>} to true, via repository’s | 
|  | <code>gitweb.extraBranchRefs</code> configuration variable, which contains a | 
|  | space separated list of refs. An example:</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>[gitweb] | 
|  | extraBranchRefs = sandbox wip other</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>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:</p> | 
|  | </div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>[gitweb] | 
|  | extraBranchRefs = sandbox | 
|  | extraBranchRefs = wip other</pre> | 
|  | </div> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>It is an error to specify a ref that does not pass "git check-ref-format" | 
|  | scrutiny. Duplicated values are filtered.</p> | 
|  | </div> | 
|  | </dd> | 
|  | </dl> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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="listingblock"> | 
|  | <div class="content"> | 
|  | <pre>$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;</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>$known_snapshot_formats{'zip'}{'disabled'} = 1; | 
|  | $known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6'];</pre> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_bugs">BUGS</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"> | 
|  | <p>Debugging would be easier if the fallback configuration file | 
|  | (<code>/etc/gitweb.conf</code>) and environment variable to override its location | 
|  | (<em>GITWEB_CONFIG_SYSTEM</em>) had names reflecting their "fallback" role. | 
|  | The current names are kept to avoid breaking working setups.</p> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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> | 
|  | <div id="footer"> | 
|  | <div id="footer-text"> | 
|  | Last updated 2025-08-25 14:46:08 -0700 | 
|  | </div> | 
|  | </div> | 
|  | </body> | 
|  | </html> |