Spec-Zone.ru › Git

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_ok

our $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_NAME CGI и задаёт название сайта «$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. Значение по умолчанию отсутствует.

$site_footer

Имя файла с 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[1], git-instaweb[1]

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API