Change summary
crates/git/src/repository.rs | 4 ++++
crates/git_ui/src/branch_picker.rs | 11 +++++++----
2 files changed, 11 insertions(+), 4 deletions(-)
Detailed changes
@@ -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/")
@@ -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