From 0e9b8c2957c0325667c19166a1257325cdd4a777 Mon Sep 17 00:00:00 2001 From: Kiril Videlov Date: Sat, 20 Jul 2024 15:51:46 +0200 Subject: [PATCH] fixes a situation in which listing of snapshots fails --- crates/gitbutler-oplog/src/oplog.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/crates/gitbutler-oplog/src/oplog.rs b/crates/gitbutler-oplog/src/oplog.rs index 16971eae1..3d9c4a71f 100644 --- a/crates/gitbutler-oplog/src/oplog.rs +++ b/crates/gitbutler-oplog/src/oplog.rs @@ -867,10 +867,23 @@ fn tree_from_applied_vbranches( for branch in applied_branch_trees { let branch_tree = repo.find_tree(branch)?; - let mut workdir_temp_index = - repo.merge_trees(&base_tree, ¤t_ours, &branch_tree, None)?; - workdir_tree_id = workdir_temp_index.write_tree_to(repo)?; - current_ours = repo.find_tree(workdir_tree_id)?; + let mut merge_options: git2::MergeOptions = git2::MergeOptions::new(); + merge_options.fail_on_conflict(false); + let mut workdir_temp_index = repo.merge_trees( + &base_tree, + ¤t_ours, + &branch_tree, + Some(&merge_options), + )?; + match workdir_temp_index.write_tree_to(repo) { + Ok(id) => { + workdir_tree_id = id; + current_ours = repo.find_tree(workdir_tree_id)?; + } + Err(_err) => { + tracing::warn!("Failed to merge tree {branch} - this branch is probably applied at a time when it should not be"); + } + } } Ok(workdir_tree_id)