Le daemon intégré
Git 2.36 a introduit un daemon fsmonitor intégré, éliminant le besoin de services externes comme Watchman. Il s'exécute sous git fsmonitor--daemon, écoute les événements OS et répond aux requêtes Git avec la liste des chemins changés.
Cycle de vie
git config core.fsmonitor true
git status
git fsmonitor--daemon status
git fsmonitor--daemon stop
git fsmonitor--daemon run
Comment ça s'intègre
Quand core.fsmonitor=true, Git interroge le daemon pour les chemins changés.
Vérifier le 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
Usage des ressources
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl fs.inotify.max_user_instances=8192
Plusieurs worktrees
Chaque worktree a son propre daemon.
Logging
Les logs vont à .git/fsmonitor--daemon.log en debug.
Erreurs courantes
Lancer sur des filesystems réseau où les événements de changement ne sont pas fiables (NFS, SMB).
Watchman vs intégré
Le daemon intégré est le défaut recommandé.