Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.50.1 → 2.51.0 no changes
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.37.3 → 2.42.4 no changes
-
2.37.2
2022-08-11
- 2.22.1 → 2.37.1 no changes
-
2.22.0
2019-06-07
- 2.17.1 → 2.21.4 no changes
-
2.17.0
2018-04-02
- 2.10.5 → 2.16.6 no changes
-
2.9.5
2017-07-30
- 2.2.3 → 2.8.6 no changes
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
СИНОПСИС
git
daemon
[--verbose
] [--syslog
] [--export-all
] [--timeout=
<n>] [--init-timeout=
<n>] [--max-connections=
<n>] [--strict-paths
] [--base-path=
<path>] [--base-path-relaxed
] [--user-path
|--user-path=
<path>] [--interpolated-path=
<pathtemplate>] [--reuseaddr
] [--detach
] [--pid-file=
<file>] [--enable=
<service>] [--disable=
<service>] [--allow-override=
<service>] [--forbid-override=
<service>] [--access-hook=
<path>] [--
[no-
]informative-errors
] [--inetd
| [--listen=
<host-or-ipaddr>] [--port=
<n>] [--user=
<user> [--group=
<group>]]] [--log-destination=
(stderr
|syslog
|none
)] [<directory>…]
ОПИС
Дійсно простий 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=
<host-or-ipaddr> -
Прослуховувати певну 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=
<destination> -
Надсилати повідомлення журналу за вказаним призначенням. Зверніть увагу, що цей параметр не передбачає використання опції
--verbose
, тому за замовчуванням реєструватимуться лише помилки. <призначення> має бути одним із таких пунктів:-
stderr
-
Запис у стандартну помилку. Зверніть увагу, що якщо вказано
--detach
, процес відключається від справжньої стандартної помилки, що робить цей пункт призначення фактично еквівалентнимnone
. -
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=
<group> -
Змініть uid та gid демона перед входом у цикл обслуговування. Якщо вказано лише
--user
без--group
, використовується основний ідентифікатор групи для користувача. Значення опції надаютьсяgetpwnam
(3
) таgetgrnam
(3
), а числові ідентифікатори не підтримуються.Використання цих опцій з
--inetd
є помилкою; за потреби скористайтеся можливостями демона inet, щоб досягти того ж результату, перш ніж запускатиgit
daemon
.Як і багато програм, які змінюють ідентифікатор користувача, демон не скидає змінні середовища, такі як
HOME
, під час запуску програм git, наприклад,upload-pack
таreceive-pack
. Використовуючи цю опцію, ви також можете встановити та експортуватиHOME
так, щоб він вказував на домашній каталог <користувач> перед запуском демона, та переконатися, що будь-які файли конфігурації Git у цьому каталозі доступні для читання <користувач>. -
--enable=
<послуга> -
--disable=
<послуга> -
Увімкнути/вимкнути службу для всього сайту за замовчуванням. Зверніть увагу, що службу, вимкнену для всього сайту, все ще можна ввімкнути для кожного репозиторію, якщо її позначено як перевизначену, а репозиторій увімкне службу за допомогою елемента конфігурації.
-
--allow-override=
<послуга> -
--forbid-override=
<service> -
Дозволити/заборонити зміну налаштувань за замовчуванням для всього сайту за допомогою конфігурації для кожного репозиторію. За замовчуванням усі служби можна перевизначити.
-
--informative-errors
-
--no-informative-errors
-
Коли інформативні помилки ввімкнено, git-daemon повідомлятиме клієнту детальніші помилки, розрізняючи такі стани, як «немає такого репозиторію» та «репозиторій не експортовано». Це зручніше для клієнтів, але може призвести до витоку інформації про існування неекспортованих репозиторіїв. Коли інформативні помилки не ввімкнено, всі помилки повідомлятимуть клієнту про «відмовлено в доступі». Значення за замовчуванням —
--no-informative-errors
. -
--access-hook=
<шлях> -
Щоразу, коли клієнт підключається, спочатку виконайте зовнішню команду, визначену тегом <path>, з назвою служби (наприклад, "upload-pack"), шляхом до репозиторію, іменем хоста (
%H
), канонічним іменем хоста (%CH
), IP-адресою (%IP
) та TCP-портом (%P
) як аргументами командного рядка. Зовнішня команда може вирішити відхилити службу, завершивши роботу з ненульовим статусом (або дозволити її, завершивши роботу з нульовим статусом). Вона також може переглянути змінні середовища $REMOTE_ADDR та$REMOTE_PORT
, щоб дізнатися про запитувача під час прийняття цього рішення.Зовнішня команда може за бажанням записати один рядок у стандартний вивід, який буде надіслано запитувачу як повідомлення про помилку у разі відхилення послуги.
- <католог>
-
Решта аргументів надають список каталогів. Якщо вказано будь-які каталоги, то процес
git-daemon
обслуговуватиме запитуваний каталог, лише якщо він міститься в одному з цих каталогів. Якщо вказано--strict-paths
, то запитуваний каталог має точно відповідати одному з цих каталогів.
ПОСЛУГИ
Ці служби можна глобально вмикати/вимикати за допомогою параметрів командного рядка цієї команди. Якщо потрібен детальніший контроль (наприклад, дозволити запуск git
archive
лише в кількох вибраних репозиторіях, які обслуговує демон), для їх увімкнення або вимкнення можна використовувати файл конфігурації для кожного репозиторію.
- upload-pack
-
Це обслуговує клієнтів
git
fetch-pack
таgit
ls-remote
. За замовчуванням це ввімкнено, але репозиторій може вимкнути це, встановивши елемент конфігураціїdaemon.uploadpack
у значенняfalse
. - upload-archive
-
Це обслуговує
git
archive
--remote
. За замовчуванням це вимкнено, але репозиторій може ввімкнути це, встановивши елемент конфігураціїdaemon.uploadarch
у значенняtrue
. - receive-pack
-
Це обслуговує клієнтів
git
send-pack
, дозволяючи анонімне надсилання змін. За замовчуванням це вимкнено, оскільки в протоколі немає автентифікації (іншими словами, будь-хто може надсилати будь-що до репозиторію, включаючи видалення посилань). Це призначено виключно для закритої локальної мережі, де всі дружні. Цю службу можна ввімкнути, встановивши для елемента конфігураціїdaemon.receivepack
значенняtrue
.
ПРИКЛАДИ
- Ми припускаємо наступне у /etc/services
-
$ grep 9418 /etc/services git 9418/tcp # Система контролю версій Git
- «git daemon» як сервер inetd
-
Щоб налаштувати «git daemon» як службу inetd, яка обробляє будь-який репозиторій у
/pub/foo
або/pub/bar
, помістіть запис, подібний до наступного, у/etc/inetd
в один рядок:git stream tcp nowait nobody /usr/bin/git git daemon --inetd --verbose --export-all /pub/foo /pub/bar
- «git daemon» як inetd-сервер для віртуальних хостів
-
Щоб налаштувати «git daemon» як службу inetd, яка обробляє репозиторії для різних віртуальних хостів,
www.example.com
таwww.example.org
, помістіть запис, подібний до наступного, у/etc/inetd
в один рядок:git stream tcp nowait nobody /usr/bin/git git daemon --inetd --verbose --export-all --interpolated-path=/pub/%H%D /pub/www.example.org/software /pub/www.example.com/software /software
У цьому прикладі кореневий каталог
/pub
міститиме підкаталог для кожного підтримуваного імені віртуального хоста. Крім того, обидва хости рекламують репозиторії просто якgit://www.example.com/software/repo.git
. Для клієнтів версій до 1.4.0 також можна створити символічне посилання з/software
на відповідний репозиторій за замовчуванням. - «git daemon» як звичайний демон для віртуальних хостів
-
Щоб налаштувати
git
daemon
як звичайну службу, не пов’язану з inetd, яка обробляє репозиторії для кількох віртуальних хостів на основі їхніх IP-адрес, запустіть демон ось так:git daemon --verbose --export-all --interpolated-path=/pub/%IP/%D /pub/192.168.1.200/software /pub/10.10.220.23/software
У цьому прикладі кореневий каталог
/pub
міститиме підкаталог для кожної підтримуваної IP-адреси віртуального хоста. Однак доступ до репозиторіїв все ще можна отримати за назвою хоста, якщо вони відповідають цим IP-адресам. - вибіркове вмикання/вимикання служб для кожного репозиторію
-
Щоб увімкнути
git
archive
--remote
та вимкнутиgit
fetch
для репозиторію, додайте наступне у файл конфігурації репозиторію (тобто файл config поруч ізHEAD
, refs та objects).[daemon] uploadpack = false uploadarch = true
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
git
daemon
встановить REMOTE_ADDR
на IP-адресу клієнта, який підключився до нього, якщо IP-адреса доступна. REMOTE_ADDR
буде доступний в середовищі хуків, що викликаються під час виконання служб.
GIT
Частина набору git[1]