mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-08 08:53:43 +08:00
* fix(discover): honor .git/info/exclude during file discovery index_repository only loaded .gitignore when building the exclusion matcher. .git/info/exclude — the per-clone exclude file that Git treats as authoritative — was never read, so paths excluded only there were walked in full. On repos with Sandcastle worktrees this caused the indexer to traverse 661K files / 170 GB and OOM (issue #489). Add cbm_gitignore_merge() to append patterns from one matcher into another. In cbm_discover_ex, after loading .gitignore, also load .git/info/exclude and merge its patterns in. If only the exclude file exists, use it directly. No downstream call paths change. Add three unit tests for cbm_gitignore_merge and two integration tests that reproduce the issue scenario (exclude-only and exclude-stacked- with-gitignore). Signed-off-by: ShauryaaSharma <shauryasofficial27@gmail.com> * style(discover): fix clang-format alignment in cbm_gitignore_merge Signed-off-by: ShauryaaSharma <shauryasofficial27@gmail.com> --------- Signed-off-by: ShauryaaSharma <shauryasofficial27@gmail.com>