diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dc44bcb4..cb624afa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- Fixed issue where searching for refs/heads/ would return no matches. [#809](https://github.com/sourcebot-dev/sourcebot/pull/809) + ## [4.10.19] - 2026-01-28 ### Fixed diff --git a/packages/backend/src/repoIndexManager.ts b/packages/backend/src/repoIndexManager.ts index 8e499863a..154b3da26 100644 --- a/packages/backend/src/repoIndexManager.ts +++ b/packages/backend/src/repoIndexManager.ts @@ -397,7 +397,12 @@ export class RepoIndexManager { path: repoPath, }); - let revisions = defaultBranch ? [defaultBranch] : ['HEAD']; + // Ensure defaultBranch has refs/heads/ prefix for consistent searching + const defaultBranchWithPrefix = defaultBranch && !defaultBranch.startsWith('refs/') + ? `refs/heads/${defaultBranch}` + : defaultBranch; + + let revisions = defaultBranchWithPrefix ? [defaultBranchWithPrefix] : ['HEAD']; if (metadata.branches) { const branchGlobs = metadata.branches @@ -427,6 +432,9 @@ export class RepoIndexManager { ]; } + // De-duplicate revisions to ensure we don't have duplicate branches/tags + revisions = [...new Set(revisions)]; + // zoekt has a limit of 64 branches/tags to index. if (revisions.length > 64) { logger.warn(`Too many revisions (${revisions.length}) for repo ${repo.id}, truncating to 64`);