git: Don't filter local upstreams from branch picker (#30557)

Release Notes:

- Fixed local git branches being excluded from the branch selector when
they were set as the upstream of another local branch.
This commit is contained in:
Cole Miller 2025-05-19 15:41:58 +02:00 committed by GitHub
parent 571c5e7407
commit 42dd511fc2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 4 deletions

View file

@ -78,6 +78,10 @@ pub struct Upstream {
}
impl Upstream {
pub fn is_remote(&self) -> bool {
self.remote_name().is_some()
}
pub fn remote_name(&self) -> Option<&str> {
self.ref_name
.strip_prefix("refs/remotes/")

View file

@ -98,15 +98,18 @@ impl BranchList {
let all_branches = cx
.background_spawn(async move {
let upstreams: HashSet<_> = all_branches
let remote_upstreams: HashSet<_> = all_branches
.iter()
.filter_map(|branch| {
let upstream = branch.upstream.as_ref()?;
Some(upstream.ref_name.clone())
branch
.upstream
.as_ref()
.filter(|upstream| upstream.is_remote())
.map(|upstream| upstream.ref_name.clone())
})
.collect();
all_branches.retain(|branch| !upstreams.contains(&branch.ref_name));
all_branches.retain(|branch| !remote_upstreams.contains(&branch.ref_name));
all_branches.sort_by_key(|branch| {
branch