mirror of
https://github.com/gitbutlerapp/gitbutler.git
synced 2024-10-03 23:49:20 +03:00
Merge pull request #4241 from gitbutlerapp/simplify-vbranches-deps-graph
simplify vbranches deps graph
This commit is contained in:
commit
f1f7039053
@ -4,5 +4,3 @@ mod repository;
|
||||
|
||||
pub use config::Config;
|
||||
pub use repository::{LogUntil, Repository};
|
||||
|
||||
pub mod signatures;
|
||||
|
@ -335,14 +335,12 @@ impl Repository {
|
||||
|
||||
pub fn commit(
|
||||
&self,
|
||||
user: Option<&users::User>,
|
||||
message: &str,
|
||||
tree: &git2::Tree,
|
||||
parents: &[&git2::Commit],
|
||||
commit_headers: Option<CommitHeadersV2>,
|
||||
) -> Result<git2::Oid> {
|
||||
let (author, committer) =
|
||||
super::signatures::signatures(self, user).context("failed to get signatures")?;
|
||||
let (author, committer) = self.signatures().context("failed to get signatures")?;
|
||||
self.repo()
|
||||
.commit_with_signature(
|
||||
None,
|
||||
@ -631,6 +629,25 @@ impl Repository {
|
||||
pub fn repo(&self) -> &git2::Repository {
|
||||
&self.git_repository
|
||||
}
|
||||
|
||||
fn signatures(&self) -> Result<(git2::Signature, git2::Signature)> {
|
||||
let config = self.config();
|
||||
|
||||
let author = match (config.user_name()?, config.user_email()?) {
|
||||
(None, Some(email)) => git2::Signature::now(&email, &email)?,
|
||||
(Some(name), None) => git2::Signature::now(&name, &format!("{}@example.com", &name))?,
|
||||
(Some(name), Some(email)) => git2::Signature::now(&name, &email)?,
|
||||
_ => git2::Signature::now("GitButler", "gitbutler@gitbutler.com")?,
|
||||
};
|
||||
|
||||
let comitter = if config.user_real_comitter()? {
|
||||
author.clone()
|
||||
} else {
|
||||
git2::Signature::now("GitButler", "gitbutler@gitbutler.com")?
|
||||
};
|
||||
|
||||
Ok((author, comitter))
|
||||
}
|
||||
}
|
||||
|
||||
type OidFilter = dyn Fn(&git2::Commit) -> Result<bool>;
|
||||
|
@ -1,32 +0,0 @@
|
||||
use crate::users;
|
||||
use anyhow::Result;
|
||||
|
||||
pub fn signatures<'a>(
|
||||
project_repository: &super::Repository,
|
||||
user: Option<&users::User>,
|
||||
) -> Result<(git2::Signature<'a>, git2::Signature<'a>)> {
|
||||
let config = project_repository.config();
|
||||
|
||||
let author = match (user, config.user_name()?, config.user_email()?) {
|
||||
(_, Some(name), Some(email)) => git2::Signature::now(&name, &email)?,
|
||||
(Some(user), _, _) => try_from(user)?,
|
||||
_ => git2::Signature::now("GitButler", "gitbutler@gitbutler.com")?,
|
||||
};
|
||||
|
||||
let comitter = if config.user_real_comitter()? {
|
||||
author.clone()
|
||||
} else {
|
||||
git2::Signature::now("GitButler", "gitbutler@gitbutler.com")?
|
||||
};
|
||||
|
||||
Ok((author, comitter))
|
||||
}
|
||||
|
||||
fn try_from(value: &users::User) -> Result<git2::Signature<'static>> {
|
||||
let name = value
|
||||
.name
|
||||
.as_deref()
|
||||
.or(value.given_name.as_deref())
|
||||
.unwrap_or(&value.email);
|
||||
Ok(git2::Signature::now(name, &value.email)?)
|
||||
}
|
@ -16,7 +16,6 @@ use crate::{
|
||||
git::{self, diff},
|
||||
project_repository::{self, LogUntil},
|
||||
projects::FetchResult,
|
||||
users,
|
||||
virtual_branches::branch::BranchOwnershipClaims,
|
||||
};
|
||||
|
||||
@ -327,10 +326,9 @@ fn _print_tree(repo: &git2::Repository, tree: &git2::Tree) -> Result<()> {
|
||||
// determine if what the target branch is now pointing to is mergeable with our current working directory
|
||||
// merge the target branch into our current working directory
|
||||
// update the target sha
|
||||
pub fn update_base_branch<'repo>(
|
||||
project_repository: &'repo project_repository::Repository,
|
||||
user: Option<&users::User>,
|
||||
) -> anyhow::Result<Vec<git2::Branch<'repo>>> {
|
||||
pub fn update_base_branch(
|
||||
project_repository: &project_repository::Repository,
|
||||
) -> anyhow::Result<Vec<git2::Branch<'_>>> {
|
||||
project_repository.assure_resolved()?;
|
||||
|
||||
// look up the target and see if there is a new oid
|
||||
@ -489,7 +487,6 @@ pub fn update_base_branch<'repo>(
|
||||
|
||||
let new_target_head = project_repository
|
||||
.commit(
|
||||
user,
|
||||
format!(
|
||||
"Merged {}/{} into {}",
|
||||
target.branch.remote(),
|
||||
|
@ -17,29 +17,22 @@ use super::{
|
||||
use crate::{
|
||||
git, project_repository,
|
||||
projects::{self, ProjectId},
|
||||
users,
|
||||
};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Controller {
|
||||
projects: projects::Controller,
|
||||
users: users::Controller,
|
||||
helper: git::credentials::Helper,
|
||||
|
||||
semaphore: Arc<Semaphore>,
|
||||
}
|
||||
|
||||
impl Controller {
|
||||
pub fn new(
|
||||
projects: projects::Controller,
|
||||
users: users::Controller,
|
||||
helper: git::credentials::Helper,
|
||||
) -> Self {
|
||||
pub fn new(projects: projects::Controller, helper: git::credentials::Helper) -> Self {
|
||||
Self {
|
||||
semaphore: Arc::new(Semaphore::new(1)),
|
||||
|
||||
projects,
|
||||
users,
|
||||
helper,
|
||||
}
|
||||
}
|
||||
@ -53,17 +46,11 @@ impl Controller {
|
||||
run_hooks: bool,
|
||||
) -> Result<git2::Oid> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
self.with_verify_branch(project_id, |project_repository, user| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let snapshot_tree = project_repository.project().prepare_snapshot();
|
||||
let result = super::commit(
|
||||
project_repository,
|
||||
branch_id,
|
||||
message,
|
||||
ownership,
|
||||
user,
|
||||
run_hooks,
|
||||
)
|
||||
.map_err(Into::into);
|
||||
let result =
|
||||
super::commit(project_repository, branch_id, message, ownership, run_hooks)
|
||||
.map_err(Into::into);
|
||||
let _ = snapshot_tree.and_then(|snapshot_tree| {
|
||||
project_repository.project().snapshot_commit_creation(
|
||||
snapshot_tree,
|
||||
@ -92,7 +79,7 @@ impl Controller {
|
||||
) -> Result<(Vec<super::VirtualBranch>, Vec<git::diff::FileDiff>)> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
super::list_virtual_branches(project_repository).map_err(Into::into)
|
||||
})
|
||||
}
|
||||
@ -104,7 +91,7 @@ impl Controller {
|
||||
) -> Result<BranchId> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let branch_id = super::create_virtual_branch(project_repository, create)?.id;
|
||||
Ok(branch_id)
|
||||
})
|
||||
@ -117,9 +104,8 @@ impl Controller {
|
||||
) -> Result<BranchId> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, user| {
|
||||
super::create_virtual_branch_from_branch(project_repository, branch, user)
|
||||
.map_err(Into::into)
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
super::create_virtual_branch_from_branch(project_repository, branch).map_err(Into::into)
|
||||
})
|
||||
}
|
||||
|
||||
@ -169,23 +155,22 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, user| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::MergeUpstream));
|
||||
super::integrate_upstream_commits(project_repository, branch_id, user)
|
||||
.map_err(Into::into)
|
||||
super::integrate_upstream_commits(project_repository, branch_id).map_err(Into::into)
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn update_base_branch(&self, project_id: ProjectId) -> Result<Vec<ReferenceName>> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, user| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::UpdateWorkspaceBase));
|
||||
super::update_base_branch(project_repository, user)
|
||||
super::update_base_branch(project_repository)
|
||||
.map(|unapplied_branches| {
|
||||
unapplied_branches
|
||||
.iter()
|
||||
@ -203,7 +188,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let snapshot_tree = project_repository.project().prepare_snapshot();
|
||||
let old_branch = project_repository
|
||||
.project()
|
||||
@ -230,7 +215,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
super::delete_branch(project_repository, branch_id)
|
||||
})
|
||||
}
|
||||
@ -242,7 +227,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::DiscardHunk));
|
||||
@ -253,7 +238,7 @@ impl Controller {
|
||||
pub async fn reset_files(&self, project_id: ProjectId, files: &Vec<String>) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::DiscardFile));
|
||||
@ -270,7 +255,7 @@ impl Controller {
|
||||
) -> Result<git2::Oid> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::AmendCommit));
|
||||
@ -288,7 +273,7 @@ impl Controller {
|
||||
) -> Result<git2::Oid> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::MoveCommitFile));
|
||||
@ -311,7 +296,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let snapshot_tree = project_repository.project().prepare_snapshot();
|
||||
let result: Result<()> =
|
||||
super::undo_commit(project_repository, branch_id, commit_oid).map_err(Into::into);
|
||||
@ -335,11 +320,11 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, user| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::InsertBlankCommit));
|
||||
super::insert_blank_commit(project_repository, branch_id, commit_oid, user, offset)
|
||||
super::insert_blank_commit(project_repository, branch_id, commit_oid, offset)
|
||||
.map_err(Into::into)
|
||||
})
|
||||
}
|
||||
@ -353,7 +338,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::ReorderCommit));
|
||||
@ -370,7 +355,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::UndoCommit));
|
||||
@ -387,7 +372,7 @@ impl Controller {
|
||||
) -> Result<ReferenceName> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let snapshot_tree = project_repository.project().prepare_snapshot();
|
||||
let result = super::convert_to_real_branch(
|
||||
project_repository,
|
||||
@ -413,7 +398,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
let helper = self.helper.clone();
|
||||
self.with_verify_branch_async(project_id, move |project_repository, _| {
|
||||
self.with_verify_branch_async(project_id, move |project_repository| {
|
||||
super::push(project_repository, branch_id, with_force, &helper, askpass)
|
||||
})?
|
||||
.await?
|
||||
@ -446,7 +431,7 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::SquashCommit));
|
||||
@ -462,7 +447,7 @@ impl Controller {
|
||||
message: &str,
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
self.with_verify_branch(project_id, |project_repository, _| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::UpdateCommitMessage));
|
||||
@ -538,12 +523,11 @@ impl Controller {
|
||||
) -> Result<()> {
|
||||
let _permit = self.semaphore.acquire().await;
|
||||
|
||||
self.with_verify_branch(project_id, |project_repository, user| {
|
||||
self.with_verify_branch(project_id, |project_repository| {
|
||||
let _ = project_repository
|
||||
.project()
|
||||
.create_snapshot(SnapshotDetails::new(OperationKind::MoveCommit));
|
||||
super::move_commit(project_repository, target_branch_id, commit_oid, user)
|
||||
.map_err(Into::into)
|
||||
super::move_commit(project_repository, target_branch_id, commit_oid).map_err(Into::into)
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -552,28 +536,24 @@ impl Controller {
|
||||
fn with_verify_branch<T>(
|
||||
&self,
|
||||
project_id: ProjectId,
|
||||
action: impl FnOnce(&project_repository::Repository, Option<&users::User>) -> Result<T>,
|
||||
action: impl FnOnce(&project_repository::Repository) -> Result<T>,
|
||||
) -> Result<T> {
|
||||
let project = self.projects.get(project_id)?;
|
||||
let project_repository = project_repository::Repository::open(&project)?;
|
||||
let user = self.users.get_user()?;
|
||||
super::integration::verify_branch(&project_repository)?;
|
||||
action(&project_repository, user.as_ref())
|
||||
action(&project_repository)
|
||||
}
|
||||
|
||||
fn with_verify_branch_async<T: Send + 'static>(
|
||||
&self,
|
||||
project_id: ProjectId,
|
||||
action: impl FnOnce(&project_repository::Repository, Option<&users::User>) -> Result<T>
|
||||
+ Send
|
||||
+ 'static,
|
||||
action: impl FnOnce(&project_repository::Repository) -> Result<T> + Send + 'static,
|
||||
) -> Result<JoinHandle<Result<T>>> {
|
||||
let project = self.projects.get(project_id)?;
|
||||
let project_repository = project_repository::Repository::open(&project)?;
|
||||
let user = self.users.get_user()?;
|
||||
super::integration::verify_branch(&project_repository)?;
|
||||
Ok(tokio::task::spawn_blocking(move || {
|
||||
action(&project_repository, user.as_ref())
|
||||
action(&project_repository)
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ use crate::{
|
||||
Refname, RemoteRefname,
|
||||
},
|
||||
project_repository::{self, conflicts, LogUntil},
|
||||
users,
|
||||
};
|
||||
|
||||
type AppliedStatuses = Vec<(branch::Branch, BranchStatus)>;
|
||||
@ -901,7 +900,6 @@ pub fn create_virtual_branch(
|
||||
pub fn integrate_upstream_commits(
|
||||
project_repository: &project_repository::Repository,
|
||||
branch_id: BranchId,
|
||||
user: Option<&users::User>,
|
||||
) -> Result<()> {
|
||||
conflicts::is_conflicting(project_repository, None)?;
|
||||
|
||||
@ -984,7 +982,6 @@ pub fn integrate_upstream_commits(
|
||||
}
|
||||
integrate_with_merge(
|
||||
project_repository,
|
||||
user,
|
||||
&mut branch,
|
||||
&upstream_commit,
|
||||
merge_base,
|
||||
@ -1044,7 +1041,6 @@ pub fn integrate_with_rebase(
|
||||
|
||||
pub fn integrate_with_merge(
|
||||
project_repository: &project_repository::Repository,
|
||||
user: Option<&users::User>,
|
||||
branch: &mut Branch,
|
||||
upstream_commit: &git2::Commit,
|
||||
merge_base: git2::Oid,
|
||||
@ -1084,7 +1080,6 @@ pub fn integrate_with_merge(
|
||||
let head_commit = repo.find_commit(branch.head)?;
|
||||
|
||||
project_repository.commit(
|
||||
user,
|
||||
format!(
|
||||
"Merged {}/{} into {}",
|
||||
upstream_branch.remote(),
|
||||
@ -2076,7 +2071,6 @@ pub fn commit(
|
||||
branch_id: BranchId,
|
||||
message: &str,
|
||||
ownership: Option<&branch::BranchOwnershipClaims>,
|
||||
user: Option<&users::User>,
|
||||
run_hooks: bool,
|
||||
) -> Result<git2::Oid> {
|
||||
let mut message_buffer = message.to_owned();
|
||||
@ -2165,7 +2159,6 @@ pub fn commit(
|
||||
.find_commit(merge_parent)
|
||||
.context(format!("failed to find merge parent {:?}", merge_parent))?;
|
||||
let commit_oid = project_repository.commit(
|
||||
user,
|
||||
message,
|
||||
&tree,
|
||||
&[&parent_commit, &merge_parent],
|
||||
@ -2174,7 +2167,7 @@ pub fn commit(
|
||||
conflicts::clear(project_repository).context("failed to clear conflicts")?;
|
||||
commit_oid
|
||||
}
|
||||
None => project_repository.commit(user, message, &tree, &[&parent_commit], None)?,
|
||||
None => project_repository.commit(message, &tree, &[&parent_commit], None)?,
|
||||
};
|
||||
|
||||
if run_hooks {
|
||||
@ -2864,7 +2857,6 @@ pub fn insert_blank_commit(
|
||||
project_repository: &project_repository::Repository,
|
||||
branch_id: BranchId,
|
||||
commit_oid: git2::Oid,
|
||||
user: Option<&users::User>,
|
||||
offset: i32,
|
||||
) -> Result<()> {
|
||||
let vb_state = project_repository.project().virtual_branches();
|
||||
@ -2881,7 +2873,7 @@ pub fn insert_blank_commit(
|
||||
}
|
||||
|
||||
let commit_tree = commit.tree().unwrap();
|
||||
let blank_commit_oid = project_repository.commit(user, "", &commit_tree, &[&commit], None)?;
|
||||
let blank_commit_oid = project_repository.commit("", &commit_tree, &[&commit], None)?;
|
||||
|
||||
if commit.id() == branch.head && offset < 0 {
|
||||
// inserting before the first commit
|
||||
@ -3147,7 +3139,6 @@ pub fn move_commit(
|
||||
project_repository: &project_repository::Repository,
|
||||
target_branch_id: BranchId,
|
||||
commit_id: git2::Oid,
|
||||
user: Option<&users::User>,
|
||||
) -> Result<()> {
|
||||
project_repository.assure_resolved()?;
|
||||
let vb_state = project_repository.project().virtual_branches();
|
||||
@ -3264,7 +3255,6 @@ pub fn move_commit(
|
||||
|
||||
let new_destination_head_oid = project_repository
|
||||
.commit(
|
||||
user,
|
||||
&source_branch_head.message_bstr().to_str_lossy(),
|
||||
&new_destination_tree,
|
||||
&[&project_repository
|
||||
@ -3288,12 +3278,10 @@ pub fn move_commit(
|
||||
pub fn create_virtual_branch_from_branch(
|
||||
project_repository: &project_repository::Repository,
|
||||
upstream: &git::Refname,
|
||||
user: Option<&users::User>,
|
||||
) -> Result<BranchId> {
|
||||
fn apply_branch(
|
||||
project_repository: &project_repository::Repository,
|
||||
branch_id: BranchId,
|
||||
user: Option<&users::User>,
|
||||
) -> Result<String> {
|
||||
project_repository.assure_resolved()?;
|
||||
let repo = project_repository.repo();
|
||||
@ -3400,7 +3388,6 @@ pub fn create_virtual_branch_from_branch(
|
||||
// create a merge commit to avoid the need of force pushing then.
|
||||
|
||||
let new_branch_head = project_repository.commit(
|
||||
user,
|
||||
format!(
|
||||
"Merged {}/{} into {}",
|
||||
default_target.branch.remote(),
|
||||
@ -3449,7 +3436,6 @@ pub fn create_virtual_branch_from_branch(
|
||||
// commit the merge tree oid
|
||||
let new_branch_head = project_repository
|
||||
.commit(
|
||||
user,
|
||||
format!(
|
||||
"Merged {}/{} into {}",
|
||||
default_target.branch.remote(),
|
||||
@ -3633,7 +3619,7 @@ pub fn create_virtual_branch_from_branch(
|
||||
vb_state.set_branch(branch.clone())?;
|
||||
project_repository.add_branch_reference(&branch)?;
|
||||
|
||||
match apply_branch(project_repository, branch.id, user) {
|
||||
match apply_branch(project_repository, branch.id) {
|
||||
Ok(_) => Ok(branch.id),
|
||||
Err(err)
|
||||
if err
|
||||
|
@ -4,12 +4,11 @@ use super::*;
|
||||
async fn twice() {
|
||||
let data_dir = paths::data_dir();
|
||||
let projects = projects::Controller::from_path(data_dir.path());
|
||||
let users = users::Controller::from_path(data_dir.path());
|
||||
let helper = git::credentials::Helper::from_path(data_dir.path());
|
||||
|
||||
let test_project = TestProject::default();
|
||||
|
||||
let controller = Controller::new(projects.clone(), users, helper);
|
||||
let controller = Controller::new(projects.clone(), helper);
|
||||
|
||||
{
|
||||
let project = projects
|
||||
|
@ -5,7 +5,6 @@ use gitbutler_core::error::Marker;
|
||||
use gitbutler_core::{
|
||||
git,
|
||||
projects::{self, Project, ProjectId},
|
||||
users,
|
||||
virtual_branches::{branch, Controller},
|
||||
};
|
||||
use tempfile::TempDir;
|
||||
@ -33,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 users = users::Controller::from_path(data_dir.path());
|
||||
let helper = git::credentials::Helper::from_path(data_dir.path());
|
||||
|
||||
let test_project = TestProject::default();
|
||||
@ -44,7 +42,7 @@ impl Default for Test {
|
||||
Self {
|
||||
repository: test_project,
|
||||
project_id: project.id,
|
||||
controller: Controller::new(projects.clone(), users, helper),
|
||||
controller: Controller::new(projects.clone(), helper),
|
||||
projects,
|
||||
project,
|
||||
data_dir: Some(data_dir),
|
||||
|
@ -59,14 +59,7 @@ fn commit_on_branch_then_change_file_then_get_status() -> Result<()> {
|
||||
assert_eq!(branch.commits.len(), 0);
|
||||
|
||||
// commit
|
||||
commit(
|
||||
project_repository,
|
||||
branch1_id,
|
||||
"test commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
commit(project_repository, branch1_id, "test commit", None, false)?;
|
||||
|
||||
// status (no files)
|
||||
let (branches, _) = virtual_branches::list_virtual_branches(project_repository)?;
|
||||
@ -157,14 +150,7 @@ fn track_binary_files() -> Result<()> {
|
||||
);
|
||||
|
||||
// commit
|
||||
commit(
|
||||
project_repository,
|
||||
branch1_id,
|
||||
"test commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
commit(project_repository, branch1_id, "test commit", None, false)?;
|
||||
|
||||
// status (no files)
|
||||
let (branches, _) = virtual_branches::list_virtual_branches(project_repository).unwrap();
|
||||
@ -190,14 +176,7 @@ fn track_binary_files() -> Result<()> {
|
||||
file.write_all(&image_data)?;
|
||||
|
||||
// commit
|
||||
commit(
|
||||
project_repository,
|
||||
branch1_id,
|
||||
"test commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
commit(project_repository, branch1_id, "test commit", None, false)?;
|
||||
|
||||
let (branches, _) = virtual_branches::list_virtual_branches(project_repository).unwrap();
|
||||
let commit_id = &branches[0].commits[0].id;
|
||||
@ -824,7 +803,7 @@ fn merge_vbranch_upstream_clean_rebase() -> Result<()> {
|
||||
assert_eq!(branch1.commits.len(), 1);
|
||||
// assert_eq!(branch1.upstream.as_ref().unwrap().commits.len(), 1);
|
||||
|
||||
integrate_upstream_commits(project_repository, branch1.id, None)?;
|
||||
integrate_upstream_commits(project_repository, branch1.id)?;
|
||||
|
||||
let (branches, _) = virtual_branches::list_virtual_branches(project_repository)?;
|
||||
let branch1 = &branches[0];
|
||||
@ -932,7 +911,7 @@ async fn merge_vbranch_upstream_conflict() -> Result<()> {
|
||||
assert_eq!(branch1.commits.len(), 1);
|
||||
// assert_eq!(branch1.upstream.as_ref().unwrap().commits.len(), 1);
|
||||
|
||||
integrate_upstream_commits(project_repository, branch1.id, None)?;
|
||||
integrate_upstream_commits(project_repository, branch1.id)?;
|
||||
|
||||
let (branches, _) = virtual_branches::list_virtual_branches(project_repository)?;
|
||||
let branch1 = &branches[0];
|
||||
@ -963,7 +942,6 @@ async fn merge_vbranch_upstream_conflict() -> Result<()> {
|
||||
branch1.id,
|
||||
"fix merge conflict",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1100,7 +1078,6 @@ fn unapply_branch() -> Result<()> {
|
||||
let branch1_id = virtual_branches::create_virtual_branch_from_branch(
|
||||
project_repository,
|
||||
&git::Refname::try_from(&real_branch)?,
|
||||
None,
|
||||
)?;
|
||||
let contents = std::fs::read(Path::new(&project.path).join(file_path))?;
|
||||
assert_eq!(
|
||||
@ -1188,7 +1165,6 @@ fn apply_unapply_added_deleted_files() -> Result<()> {
|
||||
create_virtual_branch_from_branch(
|
||||
project_repository,
|
||||
&git::Refname::try_from(&real_branch_2).unwrap(),
|
||||
None,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -1198,7 +1174,6 @@ fn apply_unapply_added_deleted_files() -> Result<()> {
|
||||
create_virtual_branch_from_branch(
|
||||
project_repository,
|
||||
&git::Refname::try_from(&real_branch_3).unwrap(),
|
||||
None,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -1457,7 +1432,6 @@ fn upstream_integrated_vbranch() -> Result<()> {
|
||||
branch1_id,
|
||||
"integrated commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
commit(
|
||||
@ -1465,7 +1439,6 @@ fn upstream_integrated_vbranch() -> Result<()> {
|
||||
branch2_id,
|
||||
"non-integrated commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1525,7 +1498,6 @@ fn commit_same_hunk_twice() -> Result<()> {
|
||||
branch1_id,
|
||||
"first commit to test.txt",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1560,7 +1532,6 @@ fn commit_same_hunk_twice() -> Result<()> {
|
||||
branch1_id,
|
||||
"second commit to test.txt",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1618,7 +1589,6 @@ fn commit_same_file_twice() -> Result<()> {
|
||||
branch1_id,
|
||||
"first commit to test.txt",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1653,7 +1623,6 @@ fn commit_same_file_twice() -> Result<()> {
|
||||
branch1_id,
|
||||
"second commit to test.txt",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1711,7 +1680,6 @@ fn commit_partial_by_hunk() -> Result<()> {
|
||||
branch1_id,
|
||||
"first commit to test.txt",
|
||||
Some(&"test.txt:1-6".parse::<BranchOwnershipClaims>().unwrap()),
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1729,7 +1697,6 @@ fn commit_partial_by_hunk() -> Result<()> {
|
||||
branch1_id,
|
||||
"second commit to test.txt",
|
||||
Some(&"test.txt:16-22".parse::<BranchOwnershipClaims>().unwrap()),
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1779,7 +1746,6 @@ fn commit_partial_by_file() -> Result<()> {
|
||||
branch1_id,
|
||||
"branch1 commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1838,7 +1804,6 @@ fn commit_add_and_delete_files() -> Result<()> {
|
||||
branch1_id,
|
||||
"branch1 commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -1903,7 +1868,6 @@ fn commit_executable_and_symlinks() -> Result<()> {
|
||||
branch1_id,
|
||||
"branch1 commit",
|
||||
None,
|
||||
None,
|
||||
false,
|
||||
)?;
|
||||
|
||||
@ -2069,14 +2033,7 @@ fn pre_commit_hook_rejection() -> Result<()> {
|
||||
|
||||
git2_hooks::create_hook(project_repository.repo(), git2_hooks::HOOK_PRE_COMMIT, hook);
|
||||
|
||||
let res = commit(
|
||||
project_repository,
|
||||
branch1_id,
|
||||
"test commit",
|
||||
None,
|
||||
None,
|
||||
true,
|
||||
);
|
||||
let res = commit(project_repository, branch1_id, "test commit", None, true);
|
||||
|
||||
let err = res.unwrap_err();
|
||||
assert_eq!(err.to_string(), "commit hook rejected: rejected");
|
||||
@ -2126,14 +2083,7 @@ fn post_commit_hook() -> Result<()> {
|
||||
|
||||
assert!(!hook_ran_proof.exists());
|
||||
|
||||
commit(
|
||||
project_repository,
|
||||
branch1_id,
|
||||
"test commit",
|
||||
None,
|
||||
None,
|
||||
true,
|
||||
)?;
|
||||
commit(project_repository, branch1_id, "test commit", None, true)?;
|
||||
|
||||
assert!(hook_ran_proof.exists());
|
||||
|
||||
@ -2170,14 +2120,7 @@ fn commit_msg_hook_rejection() -> Result<()> {
|
||||
|
||||
git2_hooks::create_hook(project_repository.repo(), git2_hooks::HOOK_COMMIT_MSG, hook);
|
||||
|
||||
let res = commit(
|
||||
project_repository,
|
||||
branch1_id,
|
||||
"test commit",
|
||||
None,
|
||||
None,
|
||||
true,
|
||||
);
|
||||
let res = commit(project_repository, branch1_id, "test commit", None, true);
|
||||
|
||||
let err = res.unwrap_err();
|
||||
assert_eq!(err.to_string(), "commit-msg hook rejected: rejected");
|
||||
|
@ -139,7 +139,6 @@ fn main() {
|
||||
|
||||
app_handle.manage(gitbutler_core::virtual_branches::controller::Controller::new(
|
||||
projects_controller.clone(),
|
||||
users_controller.clone(),
|
||||
git_credentials_controller.clone(),
|
||||
));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user