diff --git a/crates/gitbutler-core/src/virtual_branches/controller.rs b/crates/gitbutler-core/src/virtual_branches/controller.rs index 8236d0b6f..a0c6447a6 100644 --- a/crates/gitbutler-core/src/virtual_branches/controller.rs +++ b/crates/gitbutler-core/src/virtual_branches/controller.rs @@ -735,17 +735,7 @@ impl ControllerInner { ) -> Result, Error> { let project = self.projects.get(project_id)?; let project_repository = project_repository::Repository::open(&project)?; - let user = self.users.get_user()?; - let gb_repository = gb_repository::Repository::open( - &self.local_data_dir, - &project_repository, - user.as_ref(), - ) - .context("failed to open gitbutler repository")?; - Ok(super::list_remote_branches( - &gb_repository, - &project_repository, - )?) + Ok(super::list_remote_branches(&project_repository)?) } pub fn get_remote_branch_data( @@ -755,18 +745,7 @@ impl ControllerInner { ) -> Result { let project = self.projects.get(project_id)?; let project_repository = project_repository::Repository::open(&project)?; - let user = self.users.get_user()?; - let gb_repository = gb_repository::Repository::open( - &self.local_data_dir, - &project_repository, - user.as_ref(), - ) - .context("failed to open gitbutler repository")?; - Ok(super::get_branch_data( - &gb_repository, - &project_repository, - refname, - )?) + Ok(super::get_branch_data(&project_repository, refname)?) } pub async fn squash( diff --git a/crates/gitbutler-core/src/virtual_branches/remote.rs b/crates/gitbutler-core/src/virtual_branches/remote.rs index 52be7065c..499d59653 100644 --- a/crates/gitbutler-core/src/virtual_branches/remote.rs +++ b/crates/gitbutler-core/src/virtual_branches/remote.rs @@ -1,9 +1,11 @@ +use std::path::Path; + use anyhow::{Context, Result}; use serde::Serialize; -use super::{errors, Author}; +use super::{errors, target, Author, VirtualBranchesHandle}; use crate::{ - gb_repository, git, + git, project_repository::{self, LogUntil}, }; @@ -46,11 +48,9 @@ pub struct RemoteCommit { } pub fn list_remote_branches( - gb_repository: &gb_repository::Repository, project_repository: &project_repository::Repository, ) -> Result, errors::ListRemoteBranchesError> { - let default_target = gb_repository - .default_target() + let default_target = default_target(&project_repository.project().gb_dir()) .context("failed to get default target")? .ok_or_else(|| { errors::ListRemoteBranchesError::DefaultTargetNotSet(errors::DefaultTargetNotSet { @@ -76,12 +76,10 @@ pub fn list_remote_branches( } pub fn get_branch_data( - gb_repository: &gb_repository::Repository, project_repository: &project_repository::Repository, refname: &git::Refname, ) -> Result { - let default_target = gb_repository - .default_target() + let default_target = default_target(&project_repository.project().gb_dir()) .context("failed to get default target")? .ok_or_else(|| { errors::GetRemoteBranchDataError::DefaultTargetNotSet(errors::DefaultTargetNotSet { @@ -180,3 +178,12 @@ pub fn commit_to_remote_commit(commit: &git::Commit) -> RemoteCommit { author: commit.author().into(), } } + +fn default_target(base_path: &Path) -> Result> { + let vb_state = VirtualBranchesHandle::new(base_path); + match vb_state.get_default_target() { + Result::Ok(target) => Ok(Some(target)), + Err(crate::reader::Error::NotFound) => Ok(None), + Err(err) => Err(err.into()), + } +} diff --git a/crates/gitbutler-core/tests/virtual_branches/mod.rs b/crates/gitbutler-core/tests/virtual_branches/mod.rs index 2ed54fed5..74b42f735 100644 --- a/crates/gitbutler-core/tests/virtual_branches/mod.rs +++ b/crates/gitbutler-core/tests/virtual_branches/mod.rs @@ -1179,7 +1179,6 @@ fn detect_mergeable_branch() -> Result<()> { let Case { project, project_repository, - gb_repository, .. } = &suite.new_case(); @@ -1316,8 +1315,7 @@ fn detect_mergeable_branch() -> Result<()> { assert!(!branch2.active); assert!(is_virtual_branch_mergeable(project_repository, &branch2.id).unwrap()); - let remotes = - list_remote_branches(gb_repository, project_repository).expect("failed to list remotes"); + let remotes = list_remote_branches(project_repository).expect("failed to list remotes"); let _remote1 = &remotes .iter() .find(|b| b.name.to_string() == "refs/remotes/origin/remote_branch")