Skip to content

Commit c6eb677

Browse files
committed
[tree-diff] a new failing test
1 parent 1eb961c commit c6eb677

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

git-diff/src/visit/changes.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,23 +90,26 @@ impl<'a> visit::Changes<'a> {
9090
delete_entry_schedule_recursion(lhs, &mut state.trees, delegate)?;
9191
'inner_less: loop {
9292
match lhs_entries.next().transpose()? {
93-
Some(lhs) => {
94-
if lhs.filename == rhs.filename {
93+
Some(lhs) => match lhs.filename.cmp(rhs.filename) {
94+
Equal => {
9595
handle_lhs_and_rhs_with_equal_filenames(
9696
lhs,
9797
rhs,
9898
&mut state.trees,
9999
delegate,
100100
)?;
101101
break 'inner_less;
102-
} else {
102+
}
103+
Less => {
103104
delegate.pop_path_component();
104105
delete_entry_schedule_recursion(lhs, &mut state.trees, delegate)?;
105106
}
106-
}
107+
Greater => {
108+
todo!("LESS -> GREATER - we overshot")
109+
}
110+
},
107111
None => {
108-
todo!("LESS: catchup less: break inner depleted - it never caught up");
109-
// break 'inner;
112+
break 'inner_less;
110113
}
111114
}
112115
}

git-diff/tests/fixtures/make_diff_repo.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,8 @@ git commit -qam 'add g/a'
6969

7070
git rm c d e
7171
git commit -qam 'remove /c /d /e'
72+
73+
git rm f
74+
touch ff
75+
git add ff
76+
git commit -qam 'rm /f, add /ff'

git-diff/tests/visit/mod.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ mod changes {
1616
const COMMIT_14: &str = "ac7c4c37c3939b820f3ff9003a7ed11d6143dc2b";
1717
const COMMIT_15: &str = "6112ecdac98a18bcbdbd83f0b180b3e1df12e293";
1818
const COMMIT_16: &str = "0ca25edc0c0b38fd6b6a0f6e4797dc08bf0c55c2";
19+
const COMMIT_17: &str = "0b93c2b59feb6c9a4efa1c78a4b4b17fd1c78508";
1920

2021
fn db() -> crate::Result<linked::Db> {
2122
linked::Db::at(
@@ -281,6 +282,23 @@ mod changes {
281282
:100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D d
282283
:100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D e"
283284
);
285+
assert_eq!(
286+
diff_with_previous_commit_from(&db, COMMIT_17)?,
287+
vec![
288+
recorder::Change::Deletion {
289+
entry_mode: EntryMode::Blob,
290+
oid: hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"),
291+
path: "f".into()
292+
},
293+
recorder::Change::Addition {
294+
entry_mode: EntryMode::Blob,
295+
oid: hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"),
296+
path: "ff".into()
297+
},
298+
],
299+
":100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D f
300+
:000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A ff"
301+
);
284302
Ok(())
285303
}
286304
}

0 commit comments

Comments
 (0)