Record: simpler detection of moves vs conflicts
Dependencies
- [2]
QAXLX3UABackwards-compatibility: moving old paths to the new "roots" feature - [3]
TELBT3CIAvoid a double loop in record - [4]
RMDMAYRXAdding a root inode (aka supporting submodules) - [5]
I52XSRUHMassive cleanup, and simplification - [6]
CCFJ7VO3Renaming "Record" to "Hunk" in the changes - [7]
ADPAFSMYProper old metadata when recording - [8]
PR32ALRGprioritise moving a file over undeletion - [9]
3S6LU2U5abstract out FileMetadata (de)serialistion - [10]
SAADQM3HFiner-grained detection of metadata on Windows - [11]
6YMDOZIBRefactoring apply - [12]
YN63NUZOSanakirja 1.0 - [13]
I24UEJQLVarious post-fire fixes - [14]
A6WKPB55Detecting (and recording) conflicts between multiple equal names for the same file - [15]
7ABOS34CDebug statements and formatting - [16]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [*]
RRCSHAYZFormatting
Change contents
- replacement in libpijul/src/record.rs at line 1054
if !moved.resurrect.is_empty() {moved.resurrect.extend(moved.alive.into_iter());let is_resurrected = !moved.resurrect.is_empty();if is_resurrected {moved.resurrect.extend(moved.alive.drain(..)); - replacement in libpijul/src/record.rs at line 1087
if moved.need_new_name {// If there was exactly one alive name, this is a regular// move, i.e. not a conflict.if moved.n_alive_names == 1 { - replacement in libpijul/src/record.rs at line 1091[2.2095]→[4.60611:60662](∅→∅),[4.509321]→[4.60611:60662](∅→∅),[4.1818]→[4.509378:509592](∅→∅),[4.60662]→[4.509378:509592](∅→∅),[4.509378]→[4.509378:509592](∅→∅)
self.actions.push(Hunk::FileMove {del: Atom::EdgeMap(EdgeMap {edges: moved.edges,inode: item.v_papa,}),add: Atom::NewVertex(NewVertex {let add = if moved.need_new_name && !is_resurrected {moved.edges.extend(moved.alive.drain(..));Atom::NewVertex(NewVertex { - edit in libpijul/src/record.rs at line 1100
})} else {Atom::EdgeMap(EdgeMap {edges: moved.alive,inode: item_v_papa,})};self.actions.push(Hunk::FileMove {del: Atom::EdgeMap(EdgeMap {edges: moved.edges,inode: item.v_papa, - edit in libpijul/src/record.rs at line 1112[4.509929][18.1904]
add, - edit in libpijul/src/record.rs at line 1234
n_alive_names: usize, - edit in libpijul/src/record.rs at line 1255
n_alive_names: 0, - edit in libpijul/src/record.rs at line 1262
// Check for any renaming as that's a priority changelet mut is_any_rename = false; - edit in libpijul/src/record.rs at line 1318
if parent_name != name {is_any_rename = true;}debug!("new_meta = {:?}, parent_meta = {:?}", new_meta, parent_meta); - edit in libpijul/src/record.rs at line 1319
if is_any_rename && !name_changed {continue;} - replacement in libpijul/src/record.rs at line 1358
if !grandparent.flag().contains(EdgeFlags::DELETED) {moved.n_alive_names += 1;} - replacement in libpijul/src/record.rs at line 1364
moved.resurrect.push(NewEdge {(if parent_was_resurrected {&mut moved.resurrect} else {&mut moved.alive}).push(NewEdge {