gitweb.conf
Название
gitweb.conf — файл конфигурации Gitweb (веб-интерфейса Git)
Краткое описание
/etc/gitweb.conf, /etc/gitweb-common.conf, $GITWEBDIR/gitweb_config.perl
Описание
Сценарий CGI gitweb для просмотра репозиториев Git через веб использует фрагмент сценария Perl в качестве файла конфигурации. Вы можете задавать переменные с помощью "our $variable = value"; текст от символа "#" до конца строки игнорируется. Подробности см. в perlsyn(1).
Пример:
# gitweb configuration file for http://git.example.org # our $projectroot = "/srv/git"; # FHS recommendation our $site_name = 'Example.org >> Repos';
Файл конфигурации используется для переопределения параметров по умолчанию, встроенных в gitweb при создании сценария gitweb.cgi.
Можно изменить параметры конфигурации непосредственно в CGI-сценарии gitweb, но при обновлении эти изменения будут потеряны. Параметры конфигурации также можно поместить в файл в том же каталоге, что и CGI-сценарий, используя имя по умолчанию gitweb_config.perl, — это позволяет создавать несколько экземпляров gitweb с разными конфигурациями с помощью символических ссылок.
Обратите внимание, что некоторыми параметрами можно управлять отдельно для каждого репозитория, а не для всего gitweb: см. подраздел «Конфигурация gitweb для отдельных репозиториев» на странице руководства gitweb[1].
Обсуждение
Gitweb считывает данные конфигурации из следующих источников в указанном порядке:
-
встроенные значения (некоторые задаются на этапе сборки);
-
общий общесистемный файл конфигурации (по умолчанию
/etc/gitweb-common.conf); -
файл конфигурации отдельного экземпляра (по умолчанию
gitweb_config.perlв том же каталоге, что и установленный gitweb) либо, если такого файла нет, резервный общесистемный файл конфигурации (по умолчанию/etc/gitweb.conf).
Значения, полученные из более поздних файлов конфигурации, переопределяют значения, полученные ранее в указанной последовательности.
Расположение общего общесистемного файла конфигурации, резервного общесистемного файла конфигурации и файла конфигурации отдельного экземпляра задаётся во время компиляции с помощью переменных конфигурации Makefile, используемых при сборке: GITWEB_CONFIG_COMMON, GITWEB_CONFIG_SYSTEM и GITWEB_CONFIG соответственно.
Расположение файлов конфигурации gitweb также можно переопределить во время выполнения, задав непустые значения следующих переменных окружения: GITWEB_CONFIG_COMMON, GITWEB_CONFIG_SYSTEM и GITWEB_CONFIG.
Синтаксис файлов конфигурации соответствует синтаксису Perl, поскольку эти файлы обрабатываются как фрагменты кода Perl (языка, на котором написан сам gitweb). Переменные обычно задаются с помощью квалификатора our (как в "our $variable = <value>;"), чтобы избежать синтаксических ошибок, если новая версия gitweb перестанет использовать переменную и, следовательно, объявлять её.
Вы можете подключить другой файл конфигурации с помощью подпрограммы read_config_file(). Например, конфигурацию gitweb, связанную с управлением доступом к просмотру репозиториев через Gitolite (один из инструментов управления репозиториями Git), можно поместить в отдельный файл, например в /etc/gitweb-gitolite.conf. Чтобы подключить его, добавьте
read_config_file("/etc/gitweb-gitolite.conf"); в нужное место используемого файла конфигурации gitweb, например в файл конфигурации gitweb для конкретной установки. Обратите внимание, что read_config_file() самостоятельно проверяет наличие считываемого файла и ничего не делает, если файл не найден. Также эта подпрограмма обрабатывает ошибки во включённом файле.
Конфигурация по умолчанию без какого-либо файла конфигурации может вполне подойти для некоторых установок. Тем не менее файл конфигурации полезен для настройки или изменения поведения gitweb различными способами, а некоторые дополнительные возможности будут недоступны, если их явно не включить с помощью настраиваемой переменной %features (см. также раздел «Настройка возможностей gitweb» ниже).
Переменные конфигурации
Некоторые переменные конфигурации получают значения по умолчанию (встроенные в сценарий CGI) при сборке gitweb — если это так, данный факт указан в их описании. Инструкции по сборке и установке gitweb см. в файле INSTALL.
Расположение репозиториев
Описанные ниже переменные конфигурации определяют, как gitweb находит репозитории Git и как репозитории отображаются и становятся доступными.
См. также раздел «Репозитории» и следующие подразделы на странице руководства gitweb[1].
- $projectroot
-
Абсолютный путь в файловой системе, который будет добавлен в начало пути к проекту; путь к репозиторию имеет вид
$projectroot/$project. При установке задаётся значение$GITWEB_PROJECTROOT. Для того чтобы gitweb мог находить репозитории, эта переменная должна быть задана правильно.Например, если значение
$projectrootзадано как «/srv/git» с помощью следующей строки в файле конфигурации gitweb:our $projectroot = "/srv/git";
тогда
http://git.example.com/gitweb.cgi?p=foo/bar.git
и соответствующий вариант с использованием path_info
http://git.example.com/gitweb.cgi/foo/bar.git
будут соответствовать пути
/srv/git/foo/bar.gitв файловой системе. - $projects_list
-
Имя обычного текстового файла со списком проектов либо имя каталога, в котором следует искать проекты.
В файлах со списком проектов должен быть указан один проект на строку; формат каждой строки:
<URI-encoded filesystem path to repository> SP <URI-encoded repository owner>
Значение этой переменной по умолчанию определяется переменной makefile
GITWEB_LISTво время установки. Если переменная пуста, gitweb будет искать репозитории в каталоге$projectroot. - $project_maxdepth
-
Если переменная
$projects_listне задана, gitweb будет рекурсивно искать репозитории Git в файловой системе. Значение$project_maxdepthограничивает глубину обхода относительно$projectroot(начальной точки); каталоги, расположенные от$projectrootдальше, чем на$project_maxdepth, будут пропущены.Это исключительно оптимизация производительности, изначально предназначенная для MacOS X, где рекурсивный обход каталогов выполняется медленно. Gitweb следует по символическим ссылкам, но обнаруживает циклы и игнорирует повторяющиеся файлы и каталоги.
Значение этой переменной по умолчанию определяется переменной конфигурации времени сборки
GITWEB_PROJECT_MAXDEPTH, значение которой по умолчанию равно 2007. - $export_ok
-
Показывать репозиторий, только если в нём существует этот файл. Действует, только если значение этой переменной истинно. Можно задать при сборке gitweb с помощью
GITWEB_EXPORT_OK. Этот путь задаётся относительноGIT_DIR. git-daemon[1] используетgit-daemon-export-ok, если его запуск не выполнен с параметром--export-all. По умолчанию переменная не задана, то есть эта функция отключена. - $export_auth_hook
-
Функция, используемая для определения того, какие репозитории следует показывать. Эта подпрограмма должна принимать один параметр — полный путь к проекту. Если она возвращает истинное значение, проект будет включён в список проектов и станет доступен через gitweb при условии, что он соответствует остальным требованиям, описанным для $export_ok, $projects_list и $projects_maxdepth. Пример:
our $export_auth_hook = sub { return -e "$_[0]/git-daemon-export-ok"; };однако описанного выше можно добиться и с помощью
$export_okour $export_ok = "git-daemon-export-ok";
Если переменная не задана (значение по умолчанию), эта функция отключена.
Более подробный пример см. также в подразделе «Управление доступом к репозиториям Git» на странице руководства gitweb[1].
- $strict_export
-
Разрешать просмотр только тех репозиториев, которые также отображаются на странице обзора. Например, в этом случае файл
$export_okопределяет, доступен ли репозиторий, а не только отображается ли он. Если$projects_listуказывает на файл со списком проектов, доступны будут только перечисленные в нём репозитории. Можно задать при сборке gitweb с помощьюGITWEB_STRICT_EXPORT. По умолчанию переменная не задана; это означает, что можно напрямую обращаться к репозиториям, скрытым на странице списка проектов (например, не перечисленным в файле $projects_list).
Поиск файлов
Следующие переменные конфигурации указывают gitweb, где искать файлы. Значения этих переменных — пути в файловой системе.
- $GIT
-
Исполняемый файл Git, который следует использовать. По умолчанию задано значение
$GIT_BINDIR/git, которое, в свою очередь, по умолчанию задано как$(bindir)/git. Если вы используете Git, установленный из бинарного пакета, обычно следует задать здесь «/usr/bin/git». Можно указать просто «git», если у веб-сервера настроена подходящая переменная PATH; с точки зрения безопасности предпочтительнее использовать абсолютный путь к исполняемому файлу Git. Если установлено несколько версий Git, эта переменная позволяет выбрать нужную. Чтобы gitweb мог работать, переменная должна быть задана (правильно). - $mimetypes_file
-
Файл, используемый для определения MIME-типа по расширению имени файла перед проверкой
/etc/mime.types. ПРИМЕЧАНИЕ: если этот путь относительный, он считается относительно текущего репозитория Git, а не сценария CGI. Если переменная не задана, используется только/etc/mime.types(если файл существует в файловой системе). Если файл с типами MIME не найден, определение MIME-типа по расширению файла отключается. По умолчанию переменная не задана. - $highlight_bin
-
Путь к исполняемому файлу highlight, который следует использовать (из-за предположений о параметрах и выводе это должна быть версия с сайта http://andre-simon.de/zip/download.php). По умолчанию задано значение
highlight; если highlight не установлен в каталогах, указанных в PATH веб-сервера, задайте полный путь к исполняемому файлу. Обратите внимание: чтобы gitweb использовал подсветку синтаксиса, должна быть включена функцияhighlight.ПРИМЕЧАНИЕ: чтобы подсветить файл, необходимо определить его тип синтаксиса, и этот синтаксис должен поддерживаться программой «highlight». По умолчанию определение синтаксиса минимально, а многие поддерживаемые типы синтаксиса не определяются автоматически. Есть три способа добавить определение синтаксиса. В первую и вторую очередь используются
%highlight_basenameи%highlight_ext, которые определяют тип по базовому имени (полному имени файла, например «Makefile») и расширению (например, «sh»). Ключи этих хеш-таблиц — соответственно базовые имена и расширения, а значением для каждого ключа является имя синтаксиса, передаваемое программе «highlight» с помощью--syntax<syntax>. В последнюю очередь используется настройка «highlight» с регулярными выражениямиShebangдля определения языка по первой строке файла (например, соответствующей строке «#!/bin/bash»). Дополнительные сведения см. в документации highlight и в файле конфигурации по умолчанию /etc/highlight/filetypes.conf.Например, если в размещённых вами репозиториях для файлов PHP используется расширение «phtml» и вы хотите правильно подсвечивать синтаксис таких файлов, добавьте в конфигурацию gitweb следующее:
our %highlight_ext; $highlight_ext{'phtml'} = 'php';
Ссылки и их назначение
Описанные ниже переменные конфигурации настраивают некоторые ссылки gitweb: их назначение и внешний вид (текст или изображение), а также расположение необходимых странице ресурсов (таблицы стилей, значка сайта, изображений, сценариев). Обычно их оставляют со значениями по умолчанию; возможное исключение — переменная @stylesheets.
- @stylesheets
-
Список URI таблиц стилей (относительно базового URI страницы). Можно указать несколько таблиц стилей, например использовать «gitweb.css» как основную и отдельную таблицу стилей с изменениями для сайта, чтобы упростить обновление gitweb. Например, можно добавить таблицу стилей
site, указавpush @stylesheets, "gitweb-site.css";
в файле конфигурации gitweb. Относительные пути в этих значениях задаются относительно базового URI gitweb.
Этот список должен содержать URI стандартной таблицы стилей gitweb. URI таблицы стилей gitweb по умолчанию можно задать во время сборки с помощью переменной makefile
GITWEB_CSS. По умолчанию используетсяstatic/gitweb.css(илиstatic/gitweb.min.css, если задана переменнаяCSSMIN, то есть при использовании минификатора CSS во время сборки).Примечание: существует также устаревшая переменная конфигурации
$stylesheet, использовавшаяся в более старых версиях gitweb. Если задана переменная$stylesheet, gitweb использует только указанную в ней таблицу стилей CSS. - $logo
-
Указывает расположение
git-logo.pngна вашем веб-сервере или, в более общем случае, URI логотипа размером 72x27. Это изображение отображается в правом верхнем углу каждой страницы gitweb и используется как логотип Atom-ленты. Путь задаётся относительно базового URI gitweb. Можно настроить при сборке gitweb с помощью переменнойGITWEB_LOGO. По умолчанию задано значениеstatic/git-logo.png. - $favicon
-
Указывает расположение
git-favicon.pngна вашем веб-сервере или, в более общем случае, URI значка сайта, который будет передаваться как изображение типа «image/png». Веб-браузеры с поддержкой значков сайтов могут отображать их в адресной строке и рядом с названием сайта в закладках. URI задаётся относительно базового URI gitweb. Можно настроить во время сборки с помощью переменнойGITWEB_FAVICON. По умолчанию задано значениеstatic/git-favicon.png. - $javascript
-
Указывает расположение
gitweb.jsна вашем веб-сервере или, в более общем случае, URI кода JavaScript, используемого gitweb. URI задаётся относительно базового URI gitweb. Можно задать во время сборки с помощью переменной конфигурации времени сборкиGITWEB_JS.По умолчанию используется
static/gitweb.jsлибоstatic/gitweb.min.js, если была задана переменная сборкиJSMIN, то есть если во время сборки использовался минификатор JavaScript. Примечание: этот единый файл создаётся из нескольких отдельных «модулей» JavaScript. - $home_link
-
Назначение ссылки на главную страницу вверху каждой страницы (первый элемент «хлебных крошек»). По умолчанию ей задаётся абсолютный URI текущей страницы (значение переменной
$my_uriили «/», если$my_uriне определена либо является пустой строкой). - $home_link_str
-
Текст ссылки на главную страницу вверху каждой страницы, ведущей на
$home_link(обычно это главная страница gitweb со списком проектов). Используется как первый элемент «хлебных крошек» gitweb: <home-link>/<project>/<action>. Можно задать во время сборки с помощью переменнойGITWEB_HOME_LINK_STR. По умолчанию задано значение «projects», поскольку эта ссылка ведёт к списку проектов. Ещё один распространённый вариант — указать название сайта. Обратите внимание: значение обрабатывается как необработанный HTML, поэтому его нельзя задавать из ненадёжных источников. - @extra_breadcrumbs
-
Дополнительные ссылки, добавляемые в начало цепочки «хлебных крошек» перед ссылкой на главную страницу; они могут вести на страницы, логически расположенные «выше» списка проектов gitweb, например на страницы организации и отдела, в которых размещён сервер gitweb. Каждый элемент списка — ссылка на массив, в котором элемент 0 содержит текст ссылки (эквивалент
$home_link_str), а элемент 1 — целевой URL (эквивалент$home_link).Например, следующая настройка создаёт цепочку «главная / разработка / проекты / …», где «проекты» — ссылка на главную страницу.
our @extra_breadcrumbs = ( [ 'home' => 'https://www.example.org/' ], [ 'dev' => 'https://dev.example.org/' ], ); - $logo_url
- $logo_label
-
URI и подпись (заголовок) ссылки на логотип Git (или логотип вашего сайта, если вы выбрали другое изображение). По умолчанию обе переменные ссылаются на главную страницу Git https://git-scm.com; ранее они указывали на документацию Git на сайте https://www.kernel.org.
Изменение внешнего вида gitweb
С помощью описанных ниже переменных можно настроить внешний вид страниц, создаваемых gitweb. Можно изменить название сайта, добавить общие верхние и нижние колонтитулы для всех страниц, добавить описание этой установки gitweb на главную страницу (страницу со списком проектов) и т. д.
- $site_name
-
Название сайта или организации, отображаемое в заголовках страниц. Задайте описательное название, чтобы закладки и т. п. было проще различать. Если эта переменная не задана или пуста, gitweb использует значение переменной окружения
SERVER_NAMECGIи задаёт название сайта «$SERVER_NAME Git» либо «Untitled Git», если переменная окружения не задана (например, при запуске gitweb как автономного сценария).Можно задать во время сборки с помощью
GITWEB_SITENAME. По умолчанию переменная не задана. - $site_html_head_string
-
Фрагмент HTML, добавляемый в раздел <head> каждой страницы. Можно задать во время сборки с помощью
GITWEB_SITE_HTML_HEAD_STRING. Значение по умолчанию отсутствует. - $site_header
-
Имя файла с HTML-кодом, добавляемым в начало каждой страницы. Путь задаётся относительно каталога, содержащего сценарий
gitweb.cgi. Можно задать во время сборки с помощьюGITWEB_SITE_HEADER. Значение по умолчанию отсутствует. -
Имя файла с HTML-кодом, добавляемым в конец каждой страницы. Путь задаётся относительно каталога, содержащего сценарий
gitweb.cgi. Можно задать во время сборки с помощьюGITWEB_SITE_FOOTER. Значение по умолчанию отсутствует. - $home_text
-
Имя HTML-файла, содержимое которого добавляется на страницу обзора проектов gitweb (представление «projects_list»), если файл существует. Путь задаётся относительно каталога, содержащего сценарий gitweb.cgi. Значение по умолчанию можно изменить во время сборки с помощью переменной
GITWEB_HOMETEXT. По умолчанию задано значениеindextext.html. - $projects_list_description_width
-
Ширина (в символах) столбца «Описание» в списке проектов. Более длинные описания будут усечены (по возможности на границе слова); полное описание доступно в атрибуте
title(обычно отображается при наведении указателя мыши). Значение по умолчанию — 25; этого может быть недостаточно, если описания проектов длинные. - $default_projects_order
-
Порядок сортировки проектов по умолчанию на странице списка проектов; он используется, если список не отсортирован явно (то есть в URL отсутствует параметр запроса CGI «o»). Допустимые значения: «none» (без сортировки), «project» (по имени проекта, то есть по пути к репозиторию относительно
$projectroot), «descr» (по описанию проекта), «owner» (по владельцу) и «age» (по дате последнего коммита).Значение по умолчанию — «project». Неизвестное значение означает отсутствие сортировки.
Изменение поведения gitweb
Эти переменные конфигурации управляют поведением gitweb internal.
- $default_blob_plain_mimetype
-
MIME-тип по умолчанию для представления blob_plain (необработанные данные), если проверка MIME-типа не определила другой тип; по умолчанию — «text/plain». Gitweb определяет MIME-тип файла для отображения по расширению его имени, используя
$mimetypes_file(если переменная задана и файл существует) и файлы/etc/mime.types(см. страницу руководства mime.types(5); gitweb поддерживает только правила для расширений имён файлов). - $default_text_plain_charset
-
Набор символов по умолчанию для текстовых файлов. Если значение не задано, используется настройка веб-сервера. По умолчанию переменная не задана.
- $fallback_encoding
-
Gitweb использует этот набор символов, если строка содержит символы, не входящие в UTF-8. Декодирование с резервной кодировкой выполняется без проверки ошибок, поэтому в качестве неё можно указать даже «utf-8». Значение должно быть допустимой кодировкой; список см. на странице руководства Encoding::Supported(3pm). По умолчанию используется «latin1», то есть «iso-8859-1».
- @diff_opts
-
Параметры обнаружения переименований для git-diff и git-diff-tree. По умолчанию используется ('-M'); задайте ('-C') или ('-C', '-C'), чтобы обнаруживать также копирования, либо укажите () — пустой список, если обнаружение переименований не требуется.
Примечание: обнаружение переименований, а особенно копирований, может сильно нагружать процессор. Кроме того, у инструментов, не входящих в Git, могут возникнуть проблемы с заплатами, созданными с указанными выше параметрами, особенно если они включают копирование файлов ('-C') или перекрёстные переименования ('-B').
Некоторые дополнительные функции и правила
Большинство функций настраивается с помощью хеш-таблицы %feature; однако некоторые дополнительные функции gitweb можно включить и настроить с помощью описанных ниже переменных. Помимо переменных конфигурации, управляющих внешним видом gitweb, в этом списке есть переменные для настройки административных аспектов работы gitweb (например, предотвращения межсайтового выполнения сценариев; это, в частности, влияет на внешний вид страниц «summary», а также на ограничение нагрузки).
- @git_base_url_list
-
Список базовых URL Git. Эти URL используются для создания адресов, указывающих, откуда получать проект; они отображаются на странице сводки проекта. Полный URL для получения имеет вид «
$git_base_url/$project» для каждого элемента списка. Можно задать несколько базовых URL (например, один для протоколаgit://, а другой — для протоколаhttp://).Обратите внимание: параметры конфигурации для отдельных репозиториев можно задавать в файле
$GIT_DIR/cloneurlили как значения многозначной переменной конфигурацииgitweb.urlв конфигурации проекта. Настройки отдельного репозитория имеют приоритет над значением, составленным из элементов@git_base_url_listи имени проекта.Одно значение (один элемент списка) можно задать во время сборки с помощью переменной конфигурации времени сборки
GITWEB_BASE_URL. По умолчанию ей задано значение (), то есть пустой список. Это означает, что gitweb не будет пытаться создавать URL проекта для получения данных из имени проекта. - $projects_list_group_categories
-
Определяет, следует ли группировать проекты по категориям на странице списка проектов. Категория проекта определяется файлом
$GIT_DIR/categoryили переменнойgitweb.categoryв конфигурации каждого репозитория. По умолчанию отключено (значение 0). - $project_list_default_category
-
Категория по умолчанию для проектов, которым категория не задана. Если указать пустую строку, такие проекты останутся без категории и будут перечислены вверху, перед проектами с категориями. Используется только при включённых категориях проектов, то есть если
$projects_list_group_categoriesимеет истинное значение. По умолчанию задано значение «» (пустая строка). - $prevent_xss
-
Если значение истинно, некоторые функции gitweb отключаются, чтобы предотвратить запуск межсайтовых сценариев (XSS) содержимым репозиториев. Установите значение true, если не доверяете содержимому репозиториев. По умолчанию значение ложно (0).
- $maxload
-
Задаёт максимальную нагрузку, при которой gitweb продолжает отвечать на запросы. Если нагрузка сервера превышает это значение, gitweb возвращает ошибку «503 Service Unavailable». Если gitweb не удаётся определить нагрузку сервера, она считается равной 0. В настоящее время это работает только в Linux, где используется
/proc/loadavg; нагрузка здесь — это среднее за последнюю минуту количество активных задач в системе, то есть реально выполняющихся процессов.Чтобы отключить эту функцию, задайте для
$maxloadнеопределённое значение (undef). Значение по умолчанию — 300. - $omit_age_column
-
Если значение истинно, столбец с датой последнего коммита не отображается на странице списка проектов. Это позволяет немного сократить операции ввода-вывода и количество запускаемых процессов — по одному на репозиторий.
- $omit_owner
-
Если значение истинно, сведения о владельце репозитория не отображаются.
- $per_request_config
-
Если задана ссылка на код, он будет выполняться для каждого запроса. Так можно задавать части конфигурации, изменяющиеся от сеанса к сеансу. Например, в файле конфигурации gitweb можно использовать следующий код:
our $per_request_config = sub { $ENV{GL_USER} = $cgi->remote_user || "gitweb"; };Если
$per_request_configне является ссылкой на код, оно интерпретируется как логическое значение. Если значение истинно, gitweb будет обрабатывать файлы конфигурации для каждого запроса; если ложно — только один раз при каждом запуске. По умолчанию значение истинно (1).ПРИМЕЧАНИЕ: перед каждым запросом значения
$my_url,$my_uriи$base_urlперезаписываются значениями по умолчанию. Поэтому, если вы хотите их изменить, обязательно задайте для этой переменной значение true или ссылку на код, вносящий требуемые изменения.Эта переменная имеет значение только в постоянных средах веб-сервера, обрабатывающих несколько запросов с использованием одного экземпляра gitweb, например mod_perl, FastCGI или Plackup.
Другие переменные
Обычно нет необходимости изменять (настраивать) описанные ниже переменные конфигурации: gitweb должен автоматически задавать для них правильные значения.
- $version
-
Версия gitweb, автоматически задаваемая при создании gitweb.cgi из gitweb.perl. Если вы используете изменённую версию gitweb, её можно изменить, например, так:
our $version .= " with caching";
например, если вы используете изменённую версию gitweb с поддержкой кэширования. Эта переменная носит исключительно информационный характер и используется, например, в метатеге «generator» в заголовке HTML.
- $my_url
- $my_uri
-
Полный и абсолютный URL сценария gitweb; в более ранних версиях gitweb эти переменные, возможно, требовалось задавать вручную, но теперь в этом нет необходимости. Если их всё же нужно задать, см.
$per_request_config. - $base_url
-
Базовый URL для относительных URL на страницах, создаваемых gitweb (например,
$logo,$favicon,@stylesheets, если это относительные URL); требуется и используется<base href="$base_url">только для URL с непустым PATH_INFO. Обычно gitweb задаёт правильное значение, поэтому нет необходимости указывать для этой переменной, например, $my_uri или «/». Если всё же требуется переопределить значение, см.$per_request_config.
Настройка функций gitweb
Многие функции gitweb можно включить (или отключить) и настроить с помощью хеша %feature. Имена функций gitweb являются ключами этого хеша.
Каждый элемент хеша %feature представляет собой ссылку на хеш и имеет следующую структуру:
"<feature-name>" => {
"sub" => <feature-sub-(subroutine)>,
"override" => <allow-override-(boolean)>,
"default" => [ <options>... ]
}, Некоторые функции нельзя переопределять отдельно для каждого проекта. Для таких функций структура соответствующего элемента хеша %feature имеет более простой вид:
"<feature-name>" => {
"override" => 0,
"default" => [ <options>... ]
}, Как видно, в ней нет элемента 'sub'.
Значение каждой части конфигурации функции описано ниже:
- default
-
Список (ссылка на массив) параметров функции (если они есть), который также используется для переключения функции (включения или отключения).
Обратите внимание, что в настоящее время это всегда ссылка на массив, даже если функция не принимает параметров конфигурации и 'default' используется только для её включения или отключения. В таком случае включите функцию, задав этому элементу значение [
1], а отключите, задав значение [0]. См. также раздел о функции "blame" в разделе "Примеры".Чтобы отключить функции, принимающие параметры (настраиваемые функции), задайте этому элементу пустой список, то есть [].
- override
-
Если это поле имеет истинное значение, данную функцию можно переопределять, то есть настраивать (или включать/отключать) отдельно для каждого репозитория.
Обычно заданную функцию "<feature>" можно настроить с помощью переменной конфигурации
gitweb.<feature> в файле конфигурации Git для отдельного репозитория.Примечание. По умолчанию никакие функции нельзя переопределять.
- sub
-
Внутренняя деталь реализации. Важно то, что если это поле отсутствует, переопределение данной функции для отдельного репозитория не поддерживается.
Вам никогда не потребуется изменять это поле в файле конфигурации gitweb.
Функции в %feature
Ниже перечислены функции gitweb, настраиваемые с помощью хеша %feature. Этот список должен быть полным, но окончательный и исчерпывающий список находится в исходном коде gitweb.cgi; описание функций приведено в комментариях.
- blame
-
Включает представления blob "blame" и "blame_incremental", в которых для каждой строки показывается последний коммит, изменивший её; см. git-blame[1]. Эта функция может сильно нагружать процессор, поэтому по умолчанию отключена.
Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.blame(логическое значение). - snapshot
-
Включает и настраивает действие "snapshot", позволяющее пользователю скачать сжатый архив любого дерева или коммита, созданный с помощью git-archive[1] и, возможно, дополнительно сжатый. Это может привести к значительному трафику, если проект большой.
Значение 'default' — список названий форматов снимков, определённых в хеше
%known_snapshot_formats, которые нужно предлагать. Поддерживаются форматы "tgz", "tbz2", "txz" (архив tar, сжатый с помощью gzip/bzip2/xz) и "zip"; полный список см. в исходном коде gitweb. По умолчанию предлагается только "tgz".Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.snapshot, содержащей разделённый запятыми список форматов или значение "none" для отключения снимков. Неизвестные значения игнорируются. - grep
-
Включает поиск grep, который выводит список файлов в выбранном дереве (каталоге), содержащих заданную строку; см. git-grep[1]. Разумеется, эта операция может сильно нагружать процессор. По умолчанию включена.
Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.grep(логическое значение). - pickaxe
-
Включает так называемый поиск pickaxe, который выводит список коммитов, добавивших или удаливших заданную строку в файле. Это может быть практичной и значительно более быстрой альтернативой действию "blame", но поиск всё ещё может сильно нагружать процессор. По умолчанию включён.
Поиск pickaxe описан в git-log[1] (в описании параметра
-S<string>, где для получения дополнительных сведений приводится ссылка на запись pickaxe в gitdiffcore[7]).Эту функцию можно настроить отдельно для каждого репозитория, задав переменную конфигурации репозитория
gitweb.pickaxe(логическое значение). - show-sizes
-
Включает показ размера blob (обычных файлов) в отдельном столбце представления "tree", аналогично тому, как это делает
ls-l; см. описание параметра-lна странице руководства git-ls-tree[1]. Это требует некоторого количества операций ввода-вывода. По умолчанию включена.Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.showSizes(логическое значение). - patches
-
Включает и настраивает представление "patches", отображающее список коммитов в формате вывода электронной почты (обычный текст); см. также git-format-patch[1]. Значение задаёт максимальное число патчей в наборе, создаваемом в представлении "patches". Чтобы отключить представление патчей, задайте полю
defaultсписок с единственным элементом или пустой список; чтобы снять ограничение — список с одним отрицательным числом. Значение по умолчанию — 16.Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.patches(целое число). - avatar
-
Поддержка аватаров. Если эта функция включена, в таких представлениях, как "shortlog" или "commit", будет отображаться аватар, связанный с адресом электронной почты каждого автора и создателя коммита.
В настоящее время доступны поставщики "gravatar" и "picon". Одновременно можно выбрать только одного поставщика (
default— список из одного элемента). Если указан неизвестный поставщик, функция отключается. Примечание. Для некоторых поставщиков может потребоваться установить дополнительные пакеты Perl; подробности см. вgitweb/INSTALL.Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.avatar.См. также
%avatar_sizeсо значениями размеров значков и аватаров в пикселях ("default" используется для однострочных представлений, например "log" и "shortlog", а "double" — для двухстрочных, например "commit", "commitdiff" или "tag"). Если размеры шрифта или высота строк по умолчанию изменены (например, при добавлении дополнительной таблицы стилей CSS в@stylesheets), эти значения, возможно, также потребуется изменить. - email-privacy
-
Скрывает адреса электронной почты в сгенерированном HTML и других данных. Это позволяет скрыть адреса электронной почты, полученные из разделов автора, создателя коммита и комментариев в журнале Git. Функция предназначена для того, чтобы затруднить работу веб-роботов, собирающих адреса и злоупотребляющих ими. Такие роботы могут игнорировать robots.txt. Обратите внимание, что пользователи и пользовательские инструменты также будут видеть скрытые адреса. Если Gitweb не является последним этапом рабочего процесса, последующие этапы могут работать неправильно из-за полученных скрытых данных. По умолчанию отключена.
- highlight
-
Подсветка синтаксиса на стороне сервера в представлении "blob". Для неё требуется доступная программа
$highlight_bin(см. описание этой переменной в разделе "Переменные конфигурации" выше), поэтому по умолчанию функция отключена.Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.highlight(логическое значение). - remote_heads
-
Включает отображение удалённых вершин (веток, отслеживающих удалённые репозитории) в списке "heads". В большинстве случаев список таких веток является ненужной внутренней подробностью, поэтому по умолчанию эта функция отключена. git-instaweb[1], обычно используемая для просмотра локальных репозиториев, включает и использует эту функцию.
Эту функцию можно настроить отдельно для каждого репозитория с помощью переменной конфигурации репозитория
gitweb.remote_heads(логическое значение).
Остальные функции нельзя переопределять отдельно для каждого проекта.
- search
-
Включает текстовый поиск, который выводит список коммитов, в которых автор, создатель коммита или текст коммита соответствуют заданной строке; см. описание параметров
--author,--committerи--grepна странице руководства git-log[1]. По умолчанию включён.Переопределение отдельно для каждого проекта не поддерживается.
- forks
-
Если эта функция включена, gitweb считает проекты во вложенных каталогах корневого каталога проектов (basename) ответвлениями существующих проектов. Для каждого проекта
$projname.gitпроекты в каталоге$projname/и его подкаталогах не отображаются в основном списке проектов. Вместо этого рядом с$projnameотображается знак '+', ведущий к представлению "forks" со списком всех ответвлений (всех проектов во вложенном каталоге$projname/). Кроме того, ссылка на представление "forks" проекта размещается на странице сводки проекта.Если список проектов берётся из файла (параметр
$projects_listуказывает на файл), ответвления распознаются только в том случае, если в этом файле они указаны после основного проекта.Переопределение отдельно для каждого проекта не поддерживается.
- actions
-
Добавляет пользовательские ссылки на панель действий всех страниц проектов. Это позволяет добавлять ссылки на сторонние скрипты, интегрированные с gitweb.
Значение "default" представляет собой список троек в форме (
"<label>","<link>","<position>"), где "position" — метка, после которой следует вставить ссылку, а "link" — форматная строка, в которой%nраскрывается в имя проекта,%f— в путь к проекту в файловой системе (то есть "$projectroot/$project"),%h— в текущий хеш (параметр gitweb 'h'), а%b— в базовый хеш (параметр gitweb 'hb');%%раскрывается в '%'.Например, на момент написания этой страницы сайт размещения Git-репозиториев https://repo.or.cz задавал это значение следующим образом, чтобы включить графический журнал (с помощью стороннего инструмента git-browser):
$feature{'actions'}{'default'} = [ ('graphiclog', '/git-browser/by-commit.html?r=%n', 'summary')];Это добавляет ссылку с названием "graphiclog" после ссылки "summary", ведущую к скрипту
git-browserи передающуюr=<project> в качестве параметра запроса.Переопределение отдельно для каждого проекта не поддерживается.
- timed
-
Включает отображение в нижнем колонтитуле страницы времени и количества команд Git, потребовавшихся для её создания и отображения. Например, в нижнем колонтитуле может быть указано: "Для создания этой страницы потребовалось 6.53325 секунды и 13 команд Git." По умолчанию отключена.
Переопределение отдельно для каждого проекта не поддерживается.
- javascript-timezone
-
Включает и настраивает возможность менять общий часовой пояс дат в выводе gitweb с помощью JavaScript. К датам в выводе gitweb относятся authordate и committerdate в представлениях "commit", "commitdiff" и "log", а также taggerdate в представлении "tag". По умолчанию включена.
Значение — список из трёх элементов: часовой пояс по умолчанию (если клиент не выбрал другой часовой пояс и не сохранил его в cookie), имя cookie для хранения выбранного часового пояса и класс CSS, используемый для разметки дат, которые нужно преобразовывать. Чтобы отключить эту функцию, задайте для "default" пустой список: [].
В типичных файлах конфигурации gitweb меняют только начальный (используемый по умолчанию) часовой пояс, оставляя остальные элементы со значениями по умолчанию:
$feature{'javascript-timezone'}{'default'}[0] = "utc";Представленный здесь пример конфигурации гарантированно совместим как с предыдущими, так и с будущими версиями.
В качестве значения часового пояса можно указать "local" (местный часовой пояс, используемый браузером), "utc" (значение, используемое gitweb, если JavaScript или эта функция отключены) или числовой часовой пояс в формате "+/-HHMM", например "+0200".
Переопределение отдельно для каждого проекта не поддерживается.
- extra-branch-refs
-
Список дополнительных каталогов в "refs", которые будут использоваться в качестве ссылок на ветки. Например, если ваша конфигурация gerrit предусматривает, что все ветки в refs/heads/ являются официальными ветками, отправляемыми после проверки, а ветки в refs/sandbox/, refs/wip и refs/other — пользовательскими, с гораздо более широкими разрешениями, возможно, вам понадобится задать эту переменную следующим образом:
$feature{'extra-branch-refs'}{'default'} = ['sandbox', 'wip', 'other'];Эту функцию можно настроить отдельно для каждого репозитория, задав $feature{
extra-branch-refs}{override} значение true, с помощью переменной конфигурации репозиторияgitweb.extraBranchRefs, содержащей разделённый пробелами список ссылок. Пример:[gitweb] extraBranchRefs = sandbox wip otherНа самом деле gitweb.extraBranchRefs — это конфигурационная переменная, допускающая несколько значений, поэтому следующий пример также корректен и даёт тот же результат, что и приведённый выше фрагмент:
[gitweb] extraBranchRefs = sandbox extraBranchRefs = wip otherУказывать ссылку, не прошедшую проверку "git check-ref-format", нельзя. Повторяющиеся значения отбрасываются.
Примеры
Чтобы включить blame, поиск pickaxe и поддержку снимков (разрешив снимки "tar.gz" и "zip"), а также позволить отдельным проектам отключать их, добавьте в файл GITWEB_CONFIG следующие строки:
$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; Если разрешено переопределение функции снимков, можно указать, какие форматы снимков глобально отключены. Также можно добавить любые нужные параметры командной строки (например, задать уровень сжатия). Например, можно отключить снимки, сжатые в Zip, и настроить запуск gzip(1) с уровнем 6, добавив в файл конфигурации gitweb следующие строки:
$known_snapshot_formats{'zip'}{'disabled'} = 1;
$known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6']; Ошибки
Отладка была бы проще, если бы файл резервной конфигурации (/etc/gitweb.conf) и переменная среды для переопределения его расположения (GITWEB_CONFIG_SYSTEM) имели названия, отражающие их роль резервных. Текущие названия сохранены, чтобы не нарушать работу существующих конфигураций.
Переменные среды
Расположение файлов конфигурации для отдельного экземпляра и всей системы можно переопределить с помощью следующих переменных среды:
- GITWEB_CONFIG
-
Задаёт расположение файла конфигурации для отдельного экземпляра.
- GITWEB_CONFIG_SYSTEM
-
Задаёт расположение резервного системного файла конфигурации. Этот файл читается только в том случае, если файл для отдельного экземпляра отсутствует.
- GITWEB_CONFIG_COMMON
-
Задаёт расположение общего системного файла конфигурации.
Файлы
- gitweb_config.perl
-
Имя файла конфигурации для отдельного экземпляра по умолчанию. Формат этого файла описан выше.
- /etc/gitweb.conf
-
Имя резервного системного файла конфигурации по умолчанию. Этот файл используется только в том случае, если переменная конфигурации для отдельного экземпляра не задана.
- /etc/gitweb-common.conf
-
Имя общего системного файла конфигурации по умолчанию.
См. также
gitweb/README, gitweb/INSTALL
gitweb.conf
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/gitweb.conf