prioritise moving a file over undeletion

rohan
Nov 12, 2021, 9:24 PM
PR32ALRGHSEWKZWV4GAYOTJZNGBKYMHKH7X6RWLLBFRQUHYFQWWAC

Dependencies

  • [2] A6WKPB55 Detecting (and recording) conflicts between multiple equal names for the same file
  • [3] NUAOEIXM Adding inode and byte to Local
  • [4] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [*] I52XSRUH Massive cleanup, and simplification
  • [*] SAADQM3H Finer-grained detection of metadata on Windows

Change contents

  • edit in "libpijul/src/record.rs" at line 989
    [3.243][3.243:244]()
  • edit in "libpijul/src/record.rs" at line 1055
    [2.36]
    [6.34470]
    // Check for any renaming as that's a priority change
    let mut is_any_rename = false;
  • edit in "libpijul/src/record.rs" at line 1073
    [4.511770]
    [4.511770]
    previous_name.clear();
    let parent_dest = txn.find_block_end(channel, parent.dest()).unwrap();
    let FileMetadata {
    basename: parent_name,
    ..
    } = changes
    .get_file_meta(
    |p| txn.get_external(&p).unwrap().map(From::from),
    *parent_dest,
    &mut previous_name,
    )
    .map_err(RecordError::Changestore)?;
    debug!("parent name {:?}", parent_name);
    if parent_name != name {
    is_any_rename = true;
    }
    }
    for parent in iter_adjacent(
    txn,
    channel,
    current_pos.inode_vertex(),
    EdgeFlags::FOLDER | EdgeFlags::PARENT,
    EdgeFlags::all(),
    )? {
    let parent = parent?;
    if !parent
    .flag()
    .contains(EdgeFlags::FOLDER | EdgeFlags::PARENT)
    {
    continue;
    }
    debug!("parent = {:?}", parent);
  • edit in "libpijul/src/record.rs" at line 1147
    [7.85]
    [7.85]
    if is_any_rename && !name_changed {
    continue;
    }