Merge pull request #4251 from gitbutlerapp/create-virtual-branch-changes

virtual branches controller - remove state dependency to credentials controller
This commit is contained in:
Kiril Videlov 2024-07-06 17:15:00 +02:00 committed by GitHub
commit 66d0ba2ac2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 17 deletions

View File

@ -1,5 +1,5 @@
use crate::{
git::BranchExt,
git::{credentials::Helper, BranchExt},
ops::entry::{OperationKind, SnapshotDetails},
project_repository::Repository,
projects::FetchResult,
@ -21,20 +21,18 @@ use crate::{
#[derive(Clone)]
pub struct Controller {
helper: git::credentials::Helper,
semaphore: Arc<Semaphore>,
}
impl Controller {
pub fn new(helper: git::credentials::Helper) -> Self {
impl Default for Controller {
fn default() -> Self {
Self {
semaphore: Arc::new(Semaphore::new(1)),
helper,
}
}
}
impl Controller {
pub async fn create_commit(
&self,
project: &Project,
@ -369,7 +367,7 @@ impl Controller {
askpass: Option<Option<BranchId>>,
) -> Result<()> {
let _permit = self.semaphore.acquire().await;
let helper = self.helper.clone();
let helper = Helper::default();
let project_repository = open_with_verify(project)?;
super::push(&project_repository, branch_id, with_force, &helper, askpass)
}
@ -426,10 +424,11 @@ impl Controller {
) -> Result<FetchResult> {
let project_repository = Repository::open(project)?;
let helper = Helper::default();
let remotes = project_repository.remotes()?;
let fetch_results: Vec<Result<(), _>> = remotes
.iter()
.map(|remote| project_repository.fetch(remote, &self.helper, askpass.clone()))
.map(|remote| project_repository.fetch(remote, &helper, askpass.clone()))
.collect();
let project_data_last_fetched = if fetch_results.iter().any(Result::is_err) {
@ -454,7 +453,7 @@ impl Controller {
// if we have a push remote, let's fetch from this too
if let Some(push_remote) = &default_target.push_remote_name {
if let Err(err) = project_repository.fetch(push_remote, &self.helper, askpass.clone()) {
if let Err(err) = project_repository.fetch(push_remote, &helper, askpass.clone()) {
tracing::warn!(?err, "fetch from push-remote failed");
}
}

View File

@ -4,11 +4,10 @@ use super::*;
async fn twice() {
let data_dir = paths::data_dir();
let projects = projects::Controller::from_path(data_dir.path());
let helper = git::credentials::Helper::default();
let test_project = TestProject::default();
let controller = Controller::new(helper);
let controller = Controller::default();
{
let project = projects

View File

@ -32,7 +32,6 @@ impl Default for Test {
fn default() -> Self {
let data_dir = paths::data_dir();
let projects = projects::Controller::from_path(data_dir.path());
let helper = git::credentials::Helper::default();
let test_project = TestProject::default();
let project = projects
@ -42,7 +41,7 @@ impl Default for Test {
Self {
repository: test_project,
project_id: project.id,
controller: Controller::new(helper),
controller: Controller::default(),
projects,
project,
data_dir: Some(data_dir),

View File

@ -135,9 +135,7 @@ fn main() {
let git_credentials_controller = git::credentials::Helper::default();
app_handle.manage(git_credentials_controller.clone());
app_handle.manage(gitbutler_core::virtual_branches::controller::Controller::new(
git_credentials_controller.clone(),
));
app_handle.manage(gitbutler_core::virtual_branches::controller::Controller::default());
let remotes_controller = gitbutler_core::remotes::controller::Controller::new(
projects_controller.clone(),