Fix: in repositories converted from the mono-root format, some deleted file name edges could be recorded twice in some cases

pmeunier
Mar 1, 2023, 10:35 AM
3VI4Z7VZBYSMPFDVKJO3BQME7SESRPLTTARIGC5WDFJNXKY6LS5AC

Dependencies

  • [2] RMDMAYRX Adding a root inode (aka supporting submodules)
  • [3] LRIUJWCR Recording files with multiple names (some files were given no name at all)
  • [4] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [5] ZXTHL45O address clippy lints
  • [6] YN63NUZO Sanakirja 1.0

Change contents

  • replacement in libpijul/src/record.rs at line 1515
    [4.51872][4.93:140](),[4.512449][4.93:140](),[4.140][4.512493:512522](),[4.512493][4.512493:512522]()
    .or_insert_with(Vec::new);
    v.push(None)
    [4.51872]
    [4.512522]
    .or_insert_with(HashSet::new);
    v.insert(None);
  • replacement in libpijul/src/record.rs at line 1520
    [4.51945][4.141:188](),[4.512643][4.141:188](),[4.188][4.51946:51999]()
    .or_insert_with(Vec::new);
    v.push(Some(parent.introduced_by()))
    [4.51945]
    [4.512738]
    .or_insert_with(HashSet::new);
    v.insert(Some(parent.introduced_by()));
  • edit in libpijul/src/record.rs at line 1574
    [2.12263]
    [2.12263]
    // Because repos may have multiple roots there may be
    // a mismatch here. The "no change" case when
    // `parent_pos` is a root vertex is when
    // `grandparent.dest()` is also a root vertex.
  • replacement in libpijul/src/record.rs at line 1621
    [4.53127][4.189:240](),[4.515681][4.189:240](),[4.240][4.53128:53190]()
    .or_insert_with(Vec::new);
    v.push(Some(grandparent.introduced_by()))
    [4.53127]
    [4.515789]
    .or_insert_with(HashSet::new);
    v.insert(Some(grandparent.introduced_by()));
  • replacement in libpijul/src/record.rs at line 1655
    [4.53740][4.241:288](),[4.516947][4.241:288](),[4.288][4.53741:53800]()
    .or_insert_with(Vec::new);
    v.push(Some(grandparent.introduced_by()));
    [4.53740]
    [3.520]
    .or_insert_with(HashSet::new);
    v.insert(Some(grandparent.introduced_by()));
  • edit in libpijul/src/record.rs at line 1702
    [2.12431]
    [2.12431]
    /// Is this vertex a (potentially deleted) "root vertex", i.e. a root
    /// of the file hierarchy?
  • replacement in libpijul/src/record.rs at line 1714
    [2.12707][2.12707:12793]()
    EdgeFlags::FOLDER | EdgeFlags::PARENT | EdgeFlags::PSEUDO | EdgeFlags::BLOCK,
    [2.12707]
    [2.12793]
    EdgeFlags::all(),
  • replacement in libpijul/src/record.rs at line 1716
    [2.12802][2.12802:12834]()
    let p = parent?.dest();
    [2.12802]
    [2.12834]
    let parent = parent?;
    if !parent.flag().contains(EdgeFlags::PARENT) {
    continue
    }
    let p = parent.dest();