Searching multiple branches and tags
By default, only the default branch of a repository is indexed and can be searched. Sourcebot can be configured to index additional branches (or tags) enabling multi-branch search. This is useful for scenarios such as:
- Searching across different releases
- Searching through feature branches during development
- Tracking changes across multiple maintenance branches simultaneously
Configuration
Multi-branch indexing is currently limited to 64 branches and tags. If this limitation impacts your use-case, please open a discussion.
Multi-branch indexing is configured on in the connection using the revisions.branches
and revisions.tags
arrays. Glob patterns are supported. For example:
For each repo defined in the connection, any branches or tags matching the patterns in branches
and tags
array will be indexed.
Search syntax
To search branches other than the default, the rev:
prefix can be used followed by the branch (or tag) name:
Example | Explanation |
---|---|
rev:feature/foo repo:A useEffect | Search for /useEffect/ on branch feature/foo in repo A |
rev:feature/foo useEffect | Search for /useEffect/ on branch feature/foo across all repos |
rev:feature/ useEffect | Search for /useEffect/ on branches that contain feature/ across all repos |
rev:feature/a rev:feature/b foo | Search for /foo/ on branches feature/a and feature/b |
rev:feature/ -rev:feature/a foo | Search for /foo/ on branches that contain feature/ except for feature/a across all repos |
To search across all branches, rev:*
:
Example | Explanation |
---|---|
rev:* repo:A "error message" | Search for /error message/ across all branches in repo A |
rev:* "error message" | Search for /error message/ across all branches and all repos |
Additional info:
refs/heads/
orrefs/tags/
can be included to fully qualify a branch or a tag, respectively. E.g.,rev:refs/heads/foo
will search the branchfoo
, whilerev:refs/tags/foo
will search the tagfoo
.rev:
does not support regular expressions or glob patterns. It uses a simplecontains
call between the branch name and the pattern. See here.
Platform support
Platform | Multi-branch indexing support |
---|---|
GitHub | ✅ |
GitLab | ✅ |
Bitbucket Cloud | ✅ |
Bitbucket Data Center | ✅ |
Gitea | ✅ |
Gerrit | ❌ |