Русский ▾ Topics ▾ Latest version ▾ git-daemon last updated in 2.50.0

НАЗВАНИЕ

git-daemon — Очень простой сервер для репозиториев Git

ОБЗОР

git daemon [--verbose] [--syslog] [--export-all]
	   [--timeout=<число>] [--init-timeout=<число>] [--max-connections=<число>]
	   [--strict-paths] [--base-path=<путь>] [--base-path-relaxed]
	   [--user-path | --user-path=<путь>]
	   [--interpolated-path=<шаблон-пути>]
	   [--reuseaddr] [--detach] [--pid-file=<файл>]
	   [--enable=<служба>] [--disable=<служба>]
	   [--allow-override=<служба>] [--forbid-override=<служба>]
	   [--access-hook=<путь>] [--[no-]informative-errors]
	   [--inetd |
	     [--listen=<хост-или-ip-адрес>] [--port=<число>]
	     [--user=<пользователь> [--group=<группа>]]]
	   [--log-destination=(stderr|syslog|none)]
	   [<каталог>…​]

ОПИСАНИЕ

Очень простой TCP-демон Git, который обычно прослушивает порт "DEFAULT_GIT_PORT" (он же 9418). Он ожидает соединения с запросом на службу и предоставляет эту службу, если она включена.

Он проверяет, есть ли в каталоге магический файл "git-daemon-export-ok", и отказывается экспортировать любой Git-каталог, который не был явно помечен для экспорта таким образом (если не указан параметр --export-all). Если вы передаёте некоторые пути каталогов в качестве аргументов git daemon, предложения ограничиваются репозиториями в этих каталогах.

По умолчанию включена только служба upload-pack, которая обслуживает клиентов git fetch-pack и git ls-remote, вызываемых из git fetch, git pull и git clone.

Это идеально подходит для обновлений только для чтения, т.е. получения из репозиториев Git.

Также существует upload-archive для обслуживания git archive.

ПАРАМЕТРЫ

--strict-paths

Сопоставлять пути точно (т.е. не разрешать "/foo/repo", когда реальный путь — "/foo/repo.git" или "/foo/repo/.git") и не использовать пути относительно пользователя. git daemon откажется запускаться, когда этот параметр включён и не указаны аргументы каталогов.

--base-path=<путь>

Переопределяет все запросы путей как относительные к указанному пути. Это своего рода "корень Git" — если вы запустите git daemon с --base-path=/srv/git на example.com, то если позже вы попытаетесь получить данные из git://example.com/hello.git, git daemon интерпретирует путь как /srv/git/hello.git.

--base-path-relaxed

Если --base-path включён и поиск репозитория не удаётся, с этим параметром git daemon попытается выполнить поиск без добавления базового пути. Это полезно для перехода к использованию --base-path, всё ещё разрешая старые пути.

--interpolated-path=<шаблон-пути>

Для поддержки виртуального хостинга можно использовать шаблон интерполированного пути для динамического создания альтернативных путей. Шаблон поддерживает %H для имени целевого хоста, предоставленного клиентом, но преобразованного в нижний регистр, %CH для канонического имени хоста, %IP для IP-адреса сервера, %P для номера порта и %D для абсолютного пути именованного репозитория. После интерполяции путь проверяется по списку каталогов.

--export-all

Разрешить получение из всех каталогов, которые выглядят как репозитории Git (имеют подкаталоги objects и refs), даже если в них нет файла git-daemon-export-ok.

--inetd

Запустить сервер как службу inetd. Подразумевает --syslog (может быть переопределено с помощью --log-destination=). Несовместимо с параметрами --detach, --port, --listen, --user и --group.

--listen=<хост-или-ip-адрес>

Прослушивать определённый IP-адрес или имя хоста. IP-адреса могут быть либо адресом IPv4, либо адресом IPv6, если поддерживается. Если IPv6 не поддерживается, то --listen=<имя-хоста> также не поддерживается, и --listen должен быть задан IPv4-адрес. Может быть указан несколько раз. Несовместимо с параметром --inetd.

--port=<n>

Прослушивать альтернативный порт. Несовместимо с параметром --inetd.

--init-timeout=<n>

Тайм-аут (в секундах) между моментом установления соединения и получением запроса клиента (обычно довольно низкое значение, поскольку это должно происходить практически мгновенно).

--timeout=<n>

Тайм-аут (в секундах) для конкретных клиентских подзапросов. Это включает время, необходимое серверу для обработки подзапроса, и время ожидания следующего запроса клиента.

--max-connections=<n>

Максимальное количество одновременных клиентов, по умолчанию 32. Установите ноль для отсутствия ограничения.

--syslog

Краткая форма для --log-destination=syslog.

--log-destination=<назначение>

Отправлять сообщения журнала в указанное место назначения. Обратите внимание, что этот параметр не подразумевает --verbose, поэтому по умолчанию будут регистрироваться только ошибочные ситуации. <назначение> должно быть одним из:

stderr

Записывать в стандартный вывод ошибок. Обратите внимание, что если указан --detach, процесс отключается от реального стандартного вывода ошибок, делая это место назначения фактически эквивалентным none.

syslog

Записывать в syslog, используя идентификатор git-daemon.

none

Отключить все журналирование.

Назначение по умолчанию — syslog, если указан --inetd или --detach, в противном случае — stderr.

--user-path
--user-path=<путь>

Разрешить использование обозначения ~пользователь в запросах. Если указано без параметра, запрос к git://host/~alice/foo рассматривается как запрос на доступ к репозиторию foo в домашнем каталоге пользователя alice. Если указан --user-path=<путь>, тот же запрос рассматривается как запрос на доступ к репозиторию <путь>/foo в домашнем каталоге пользователя alice.

--verbose

Регистрировать подробную информацию о входящих соединениях и запрошенных файлах.

--reuseaddr

Использовать SO_REUSEADDR при привязке прослушивающего сокета. Это позволяет серверу перезапускаться без ожидания тайм-аута старых соединений.

--detach

Отсоединиться от оболочки. Подразумевает --syslog.

--pid-file=<файл>

Сохранить идентификатор процесса в <файле>. Игнорируется, когда демон запущен под --inetd.

--user=<пользователь>
--group=<группа>

Изменить uid и gid демона перед входом в цикл обслуживания. Если указан только --user без --group, используется основной идентификатор группы для пользователя. Значения параметра передаются в getpwnam(3) и getgrnam(3), числовые идентификаторы не поддерживаются.

Указание этих параметров при использовании с --inetd является ошибкой; при необходимости используйте возможность демона inet для достижения того же результата перед запуском git daemon.

Как и многие программы, которые переключают идентификатор пользователя, демон не сбрасывает переменные среды, такие как HOME, когда запускает программы git, например upload-pack и receive-pack. При использовании этого параметра вам также может потребоваться установить и экспортировать HOME, чтобы он указывал на домашний каталог <пользователя> перед запуском демона, и убедиться, что любые файлы конфигурации Git в этом каталоге доступны для чтения <пользователем>.

--enable=