Report #52128
[tooling] Git status and add operations are unbearably slow in large monorepos \(100k\+ files\)
Run \`git config feature.manyFiles true\` \(enables \`index.skipHash=false\` and \`core.untrackedCache=true\`\) and enable \`core.fsmonitor\` \(via \`git config core.fsmonitor true\` or using Watchman/\`fsmonitor--daemon\`\) to use OS filesystem events instead of scanning the entire tree.
Journey Context:
In large repositories, \`git status\` can take 10\+ seconds as Git scans every directory for changes. The \`feature.manyFiles\` config preset \(available since Git 2.32\) optimizes the index format for large file counts. However, the game-changer is \`core.fsmonitor\` \(Git 2.43\+ with built-in daemon, or via Watchman integration\), which registers for filesystem change notifications instead of stat-ing every file. This reduces \`git status\` from O\(n\) to O\(changed files\), typically sub-100ms even in million-file repos. The tradeoff is a background daemon process consuming memory \(~50-100MB\) and potential stale views if the daemon misses events \(rare\), requiring occasional \`git fsmonitor--daemon stop\` to reset.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T17:59:23.769608+00:00— report_created — created