ok/jj
1
0
Fork 0
forked from mirrors/jj

commands: rewrite jj op undo using new MutableRepo::merge()

This commit is contained in:
Martin von Zweigbergk 2021-03-14 10:54:34 -07:00
parent a7f4f4cf5b
commit 8048d9641e
2 changed files with 4 additions and 14 deletions

View file

@ -110,6 +110,7 @@ fn heads_of_set(
heads heads
} }
// TODO: Make a member of MutableView?
pub fn merge_views( pub fn merge_views(
store: &StoreWrapper, store: &StoreWrapper,
left: &op_store::View, left: &op_store::View,

View file

@ -46,7 +46,6 @@ use jujube_lib::store_wrapper::StoreWrapper;
use jujube_lib::transaction::Transaction; use jujube_lib::transaction::Transaction;
use jujube_lib::tree::Tree; use jujube_lib::tree::Tree;
use jujube_lib::trees::TreeValueDiff; use jujube_lib::trees::TreeValueDiff;
use jujube_lib::view::merge_views;
use jujube_lib::working_copy::{CheckoutStats, WorkingCopy}; use jujube_lib::working_copy::{CheckoutStats, WorkingCopy};
use jujube_lib::{conflicts, files, git}; use jujube_lib::{conflicts, files, git};
use pest::Parser; use pest::Parser;
@ -1979,20 +1978,10 @@ fn cmd_op_undo(
)); ));
} }
let fixed_view = {
let parent_view = parent_ops[0].view();
let bad_view = bad_op.view();
let current_view = repo.op().view();
merge_views(
repo.store(),
current_view.store_view(),
bad_view.store_view(),
parent_view.store_view(),
)
};
let mut tx = repo.start_transaction(&format!("undo operation {}", bad_op.id().hex())); let mut tx = repo.start_transaction(&format!("undo operation {}", bad_op.id().hex()));
tx.set_view(fixed_view); let bad_repo = repo.loader().load_at(&bad_op)?;
let parent_repo = repo.loader().load_at(&parent_ops[0])?;
tx.mut_repo().merge(&bad_repo, &parent_repo);
tx.commit(); tx.commit();
update_working_copy( update_working_copy(
ui, ui,