mirror of
https://github.com/jj-vcs/jj.git
synced 2025-12-23 06:01:01 +00:00
This adds a manual regression test for the scenario in issue #5189. As of #6411, this no longer results in a panic. However, the test still fails and rightfully so: When following the reproduction for #5189 and not selecting any change in `jj split`, the split-off (first) commit will still record the deletion of `folder/.keep` but not the creation of the file `folder`. scm-record yields a selected change with `FileMode::Absent` in one of two cases: - when an existing file is deleted and this change is selected, - when a new file is created and this change is not selected. From the information provided by `File::get_selected_contents()` alone, it is not possible to distinguish these two cases. In the first case, the tree definitely needs to change to reflect the deletion, so it was marked for deletion. In the second case, that deletion marker ("tombstone") usually was just ignored because no such file existed. However, when the tombstone happens to coindice with a deleted directory and a new file has been created in its place, but neither change is selected, then the tombstone had the effect of deleting the directory from the tree. This is now fixed by only marking the file for deletion if a corresponding file mode change to `Absent` has been "checked". Otherwise, if the file mode change for the creation of a new file is not "checked", the file can be merely skipped. |
||
|---|---|---|
| .. | ||
| examples | ||
| src | ||
| testing | ||
| tests | ||
| build.rs | ||
| Cargo.toml | ||
| docs | ||
| LICENSE | ||