Il daemon integrato
Git 2.36 ha introdotto un daemon fsmonitor integrato, eliminando la necessita di servizi esterni come Watchman.
Ciclo di vita
git config core.fsmonitor true
git status
git fsmonitor--daemon status
git fsmonitor--daemon stop
git fsmonitor--daemon run
Come si integra
Quando core.fsmonitor=true, Git chiede al daemon i percorsi modificati. Il daemon risponde con un delta dal token di query precedente.
Verificare lo speedup
time git -c core.fsmonitor=false status
time git -c core.fsmonitor=true status
GIT_TRACE2_PERF=1 git status 2>&1 | grep fsmonitor
Uso risorse
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=8192
Worktree multipli
Ogni worktree ottiene il proprio daemon.
Logging
I log atterrano in .git/fsmonitor--daemon.log quando avviato in debug.
Errori comuni
Eseguire su filesystem di rete dove gli eventi di cambio sono inaffidabili (NFS, SMB).
Watchman vs integrato
Il daemon integrato e il default raccomandato.