diff --git a/src/core/ignore/GitIgnoreController.ts b/src/core/ignore/GitIgnoreController.ts index ca1a89b91a..5141790504 100644 --- a/src/core/ignore/GitIgnoreController.ts +++ b/src/core/ignore/GitIgnoreController.ts @@ -63,6 +63,8 @@ export class GitIgnoreController extends BaseIgnoreController { await this.findGitignoreFilesRecursively(this.cwd) // Load any files discovered by recursion that weren't loaded yet + // De-duplicate discovered paths to avoid redundant loads + this.gitignoreFiles = Array.from(new Set(this.gitignoreFiles)) for (const p of this.gitignoreFiles) { if (!this.gitignoreContents.has(p)) { await this.loadGitignoreFile(p) diff --git a/src/services/ripgrep/index.ts b/src/services/ripgrep/index.ts index 3a2eb99e24..8ecf57d6a6 100644 --- a/src/services/ripgrep/index.ts +++ b/src/services/ripgrep/index.ts @@ -215,9 +215,12 @@ export async function regexSearchFiles( // console.log(results) // Filter results using both controllers if provided - const filteredResults = results - .filter((result) => gitIgnoreController?.validateAccess(result.file) ?? true) - .filter((result) => rooIgnoreController?.validateAccess(result.file) ?? true) + const filteredResults = results.filter((result) => { + const file = result.file + return ( + (gitIgnoreController?.validateAccess(file) ?? true) && (rooIgnoreController?.validateAccess(file) ?? true) + ) + }) return formatResults(filteredResults, cwd) }