Spec-Zone.ru › Git

git-fsmonitor--daemon

Название

git-fsmonitor—​daemon — встроенный монитор файловой системы

Краткое описание

git fsmonitor--daemon start
git fsmonitor--daemon run
git fsmonitor--daemon stop
git fsmonitor--daemon status

Описание

Демон отслеживает изменения файлов и каталогов в рабочем каталоге с помощью платформенных механизмов уведомления файловой системы.

Демон взаимодействует напрямую с такими командами, как git status, используя интерфейс простого IPC вместо более медленного интерфейса githooks[5].

Этот демон встроен в Git, поэтому сторонние инструменты не требуются.

Параметры

start

Запускает демон в фоновом режиме.

run

Запускает демон на переднем плане.

stop

Останавливает демон, работающий в текущем рабочем каталоге, если он запущен.

status

Завершает работу с нулевым кодом, если демон отслеживает текущий рабочий каталог.

Примечания

Этот демон — длительно работающий процесс, который отслеживает один рабочий каталог и ведёт список недавно изменённых файлов и каталогов. Производительность таких команд, как git status, можно повысить, если они будут запрашивать только сводку изменений рабочего каталога, не сканируя диск.

Если для core.fsmonitor задано значение true (см. git-config[1]), такие команды, как git status, будут запрашивать у демона сведения об изменениях и автоматически запускать его при необходимости.

Дополнительные сведения см. в разделе «Монитор файловой системы» документации git-update-index[1].

Предостережения

В настоящее время демон fsmonitor не распознаёт подмодули и не умеет отфильтровывать события файловой системы, происходящие внутри подмодуля. Если демон fsmonitor отслеживает суперпроект, а файл изменяется в рабочем каталоге подмодуля, он сообщит об изменении (как об изменении в суперпроекте). Однако клиент корректно игнорирует эти дополнительные события, поэтому производительность может снизиться, но некорректного результата не будет.

По умолчанию демон fsmonitor отказывается работать с репозиториями, размещёнными на сетевых файловых системах; это поведение можно изменить, задав для fsmonitor.allowRemote значение true. Однако демон fsmonitor не гарантирует корректную работу со всеми репозиториями на сетевых файловых системах, поэтому такое использование считается экспериментальным.

В Mac OS и Linux взаимодействие между процессами (IPC) различных команд Git и демоном fsmonitor осуществляется через доменный сокет Unix (UDS) — файл специального типа. Он поддерживается собственными файловыми системами Mac OS и Linux, но не сетевыми файловыми системами, NTFS или FAT32. Другие файловые системы могут поддерживать нужные возможности, а могут и не поддерживать; корректная работа демона fsmonitor с ними не гарантируется, поэтому такое использование считается экспериментальным.

По умолчанию сокет создаётся в каталоге .git. Однако, если каталог .git расположен на сетевой файловой системе, сокет будет создан в каталоге $HOME/.git-fsmonitor-*, если только сам $HOME не находится на сетевой файловой системе. В этом случае необходимо задать переменной конфигурации fsmonitor.socketDir путь к каталогу на собственной файловой системе, в котором следует создать файл сокета.

Если ни один из перечисленных выше каталогов (.git, $HOME или fsmonitor.socketDir) не находится на собственной файловой системе, демон fsmonitor сообщит об ошибке, из-за которой завершится работа демона и выполняющейся в данный момент команды.

ПРЕДОСТЕРЕЖЕНИЯ ДЛЯ LINUX

В Linux демон fsmonitor использует inotify для отслеживания событий файловой системы. В системе inotify установлены пользовательские ограничения на количество создаваемых наблюдателей. Обычно по умолчанию для каждого пользователя разрешено не более 8192 наблюдателей.

Для больших репозиториев с множеством каталогов может потребоваться увеличить это ограничение. Узнать текущее значение можно командой:

cat /proc/sys/fs/inotify/max_user_watches

Чтобы временно увеличить ограничение:

sudo sysctl fs.inotify.max_user_watches=65536

Чтобы сохранить изменение, добавьте в /etc/sysctl.conf:

fs.inotify.max_user_watches=65536

Конфигурация

Всё содержимое этого раздела ниже данной строки выборочно включено из документации git-config[1]. Оно совпадает с текстом из указанной документации:

fsmonitor.allowRemote

По умолчанию демон fsmonitor отказывается работать с репозиториями, размещёнными на сетевых файловых системах. Значение true для параметра fsmonitor.allowRemote отменяет это поведение. Учитывается только в том случае, если для core.fsmonitor задано значение true.

fsmonitor.socketDir

Этот параметр, предназначенный для Mac OS и Linux, если задан, указывает каталог для создания доменного сокета Unix, используемого для обмена данными между демоном fsmonitor и различными командами Git. Каталог должен находиться на собственной файловой системе. Учитывается только в том случае, если для core.fsmonitor задано значение true.

fsmonitor—​daemon

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-fsmonitor--daemon

Spec-Zone.ru

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