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