W4LFX7IHQ7SDX67ATSGWDB5IN6472ZJDBKY2XZ54SBJEYD5GAT5QC SWWE2R6MVBX5CNM6X3WLXZTSRTU53PBJL7WJSFVF77XBPXDX4COAC WT3GA27PQ2AOAIGK65O3Q4DMX4AZDVNULBLRL6GF4QW6QCASUEAAC EC3TVL4X6VZZVLOKUN63LC73ADPHBHMZO7QMDXGX2ZPURVI4B4XQC KT5UYXGKEEXUHURNOYFVIG7WQ3Y3SJZMM2TP4OSW6NXSXQ5XXRHAC YBJRDOTCX3ZRDB5EVXJBR55FX3CADCSIGMYWNYVC2PD5W3GXR3DQC A5YBC77VWH2LXCZJOPZORQJI5ZYABSCHJWVX5HVNWPM5RABXESLQC D7A7MSIHJS3IAOLEPK52M4CZLDPLO7JB3Y62XACT2AM6UUCPQ6BAC UCBNZULEO6OIEV3RZCAPP6ICALAR7JIS2LLG7IRSX6PVYMFQT5AAC 4WO3ZJM2RNYZCBPS7FGYAEBELYD57OSS7LEUYCWGZBCAY272SNQQC CFYW3HGZN5O4IHGLUTUDYG7Y5FXDYPV4H2RIUA7R746PSHO7T32AC 6YZAVBWU6E5FYOI5JGEIPXGZLIKAW6LS2AOFIQWEE5DMOPPCD5PQC #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]pub struct ChangedFile {pub path: Option<String>,pub diff: ChangedFileDiff,}
pub type ChangedFiles = BTreeMap<String, ChangedFile>;pub type ChangedFile = BTreeSet<ChangedFileDiff>;pub const ROOT_FILE: &str = ".";
fn changed_files(diff: &Diff,repo_changes: &FileSystem,) -> BTreeSet<ChangedFile> {diff.changes.iter().map(|change| match dbg!(change) {
fn changed_files(diff: &Diff, repo_changes: &FileSystem) -> ChangedFiles {let mut changes: ChangedFiles = BTreeMap::new();for change in diff.changes.iter() {match dbg!(change) {
} => ChangedFile {path: Some(path.clone()),diff: ChangedFileDiff::Add,},BaseHunk::SolveNameConflict { name: _, path } => ChangedFile {path: Some(path.clone()),diff: ChangedFileDiff::SolveNameConflict,},BaseHunk::UnsolveNameConflict { name: _, path } => ChangedFile {path: Some(path.clone()),diff: ChangedFileDiff::UnsolveNameConflict,},
} => {changes.entry(path.clone()).or_default().insert(ChangedFileDiff::Add);}BaseHunk::SolveNameConflict { name: _, path } => {changes.entry(path.clone()).or_default().insert(ChangedFileDiff::SolveNameConflict);}BaseHunk::UnsolveNameConflict { name: _, path } => {changes.entry(path.clone()).or_default().insert(ChangedFileDiff::UnsolveNameConflict);}
} => ChangedFile {path: Some(local.path.clone()),diff: ChangedFileDiff::Replacement,},BaseHunk::SolveOrderConflict { change: _, local } => ChangedFile {path: Some(local.path.clone()),diff: ChangedFileDiff::SolveOrderConflict,},
} => {changes.entry(local.path.clone()).or_default().insert(ChangedFileDiff::Replacement);}BaseHunk::SolveOrderConflict { change: _, local } => {changes.entry(local.path.clone()).or_default().insert(ChangedFileDiff::SolveOrderConflict);}
ChangedFile {path: Some(local.path.clone()),diff: ChangedFileDiff::UnsolveOrderConflict,}
changes.entry(local.path.clone()).or_default().insert(ChangedFileDiff::UnsolveOrderConflict);
} => ChangedFile {path: Some(local.path.clone()),diff: ChangedFileDiff::ResurrectZombines,},BaseHunk::AddRoot { name: _, inode: _ } => ChangedFile {// TODO: maybe they don't all have path?path: None,diff: ChangedFileDiff::AddRoot,},BaseHunk::DelRoot { name: _, inode: _ } => ChangedFile {// TODO: maybe they don't all have path?path: None,diff: ChangedFileDiff::DelRoot,},}).collect()
} => {changes.entry(local.path.clone()).or_default().insert(ChangedFileDiff::ResurrectZombines);}BaseHunk::AddRoot { name: _, inode: _ } => {changes.entry(ROOT_FILE.to_string()).or_default().insert(ChangedFileDiff::AddRoot);}BaseHunk::DelRoot { name: _, inode: _ } => {changes.entry(ROOT_FILE.to_string()).or_default().insert(ChangedFileDiff::DelRoot);}}}changes
let file = repo::ChangedFile {path: Some(path.clone()),diff: repo::ChangedFileDiff::Add,};repo.changed_files.insert(file);
repo.changed_files.entry(path.clone()).or_default().insert(repo::ChangedFileDiff::Add);
.find(|(_ix, file)| &file.path == path).map(|(ix, file)| cursor::Selection::ChangedFile {ix,path: file.path.clone(),
.find(|(_ix, (file_path, _diffs))| file_path == &path).map(|(ix, (file_path, _diffs))| {cursor::Selection::ChangedFile {ix,path: file_path.clone(),}