Moving to temporary paths when outputting

[?]
Apr 25, 2021, 8:27 AM
YCEZL7VFBZNOZTSSI24D36ACJVZKXCCEOIFWIHQWK22QPB4PDTRAC

Dependencies

  • [2] I24UEJQL Various post-fire fixes
  • [3] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [4] JP3BYVXX Fixing file paths on Windows
  • [5] VO5OQW4W Removing anyhow in libpijul
  • [6] VNBLGT6G Do not output unmodified files when resetting (fix)

Change contents

  • edit in libpijul/src/working_copy/filesystem.rs at line 310
    [3.215542][3.215542:215681]()
    }
    if let Err(e) = std::fs::rename(&former, &new) {
    error!("while renaming {:?} to {:?}: {:?}", former, new, e)
  • edit in libpijul/src/working_copy/filesystem.rs at line 311
    [3.215691]
    [3.215691]
    std::fs::rename(&former, &new)?;
  • replacement in libpijul/src/output/output.rs at line 71
    [2.74185][2.74185:74249]()
    work: Arc<crossbeam_deque::Injector<(OutputItem, String)>>,
    [2.74185]
    [2.74249]
    work: Arc<crossbeam_deque::Injector<(OutputItem, String, Option<String>)>>,
  • replacement in libpijul/src/output/output.rs at line 80
    [2.74562][2.74562:74608]()
    Steal::Success((item, path)) => {
    [2.74562]
    [2.74608]
    Steal::Success((item, path, tmp)) => {
  • replacement in libpijul/src/output/output.rs at line 82
    [2.74656][2.74656:74721]()
    info!("Outputting {:?}, on thread {}", path, t);
    [2.74656]
    [2.74721]
    info!("Outputting {:?} (tmp {:?}), on thread {}", path, tmp, t);
    let path = tmp.as_deref().unwrap_or(&path);
  • replacement in libpijul/src/output/output.rs at line 91
    [2.74950][2.74950:74977]()
    &path,
    [2.74950]
    [2.74977]
    path,
  • replacement in libpijul/src/output/output.rs at line 94
    [2.75059][2.75059:75128]()
    repo.set_permissions(&path, item.meta.permissions())
    [2.75059]
    [2.75128]
    repo.set_permissions(path, item.meta.permissions())
  • edit in libpijul/src/output/output.rs at line 178
    [2.77236]
    [2.77236]
    None,
  • edit in libpijul/src/output/output.rs at line 258
    [3.677226]
    [3.677226]
    if let Some(ref mut tmp) = output_item.tmp {
    path::push(tmp, file_name);
    }
  • edit in libpijul/src/output/output.rs at line 262
    [3.677310]
    [3.20283]
    let mut tmp = output_item.tmp.take();
  • edit in libpijul/src/output/output.rs at line 269
    [3.677537]
    [3.677537]
    &mut tmp,
  • replacement in libpijul/src/output/output.rs at line 288
    [3.678091][3.20407:20454]()
    repo.create_dir_all(&path)
    [3.678091]
    [3.20454]
    let tmp_ = tmp.as_deref().unwrap_or(&path);
    repo.create_dir_all(tmp_)
  • edit in libpijul/src/output/output.rs at line 301
    [2.79053]
    [2.79053]
    tmp.as_deref(),
  • replacement in libpijul/src/output/output.rs at line 307
    [2.79264][2.79264:79344]()
    repo.set_permissions(&path, output_item.meta.permissions())
    [2.79264]
    [2.79344]
    repo.set_permissions(tmp_, output_item.meta.permissions())
  • replacement in libpijul/src/output/output.rs at line 311
    [2.79485][2.79485:79557]()
    work.push((output_item.clone(), path.clone()));
    [2.79485]
    [3.963]
    work.push((output_item.clone(), path.clone(), tmp.clone()));
  • edit in libpijul/src/output/output.rs at line 325
    [3.679142][3.679142:679182](),[3.679182][3.21021:21082](),[3.21082][2.79558:79565]()
    for (a, b) in actual_moves.iter() {
    repo.rename(a, b).map_err(OutputError::WorkingCopy)?
    }
  • replacement in libpijul/src/output/output.rs at line 326
    [2.79625][2.79625:79694]()
    let o = output_loop(repo, changes, txn, channel, work, stop, 0);
    [2.79625]
    [2.79694]
    let o = output_loop(repo.clone(), changes, txn, channel, work, stop, 0);
  • edit in libpijul/src/output/output.rs at line 331
    [2.79753]
    [3.679215]
    for (a, b) in actual_moves.iter() {
    repo.rename(a, b).map_err(OutputError::WorkingCopy)?
    }
  • edit in libpijul/src/output/output.rs at line 368
    [3.679813]
    [3.679813]
    tmp: &mut Option<String>,
  • edit in libpijul/src/output/output.rs at line 404
    [3.21451]
    [3.681279]
    if let Some(ref mut tmp) = tmp {
    crate::path::push(tmp, &s);
    } else {
    *tmp = Some(tmp_path.clone());
    }
  • edit in libpijul/src/output/mod.rs at line 84
    [3.686440]
    [3.686440]
    tmp: Option<String>,
  • edit in libpijul/src/output/mod.rs at line 97
    [3.686737]
    [3.686737]
    tmp: Option<&str>,
  • edit in libpijul/src/output/mod.rs at line 171
    [3.689547]
    [3.689547]
    tmp: tmp.map(String::from),
  • edit in libpijul/src/output/archive.rs at line 158
    [3.692729]
    [3.692729]
    None,
  • edit in libpijul/src/output/archive.rs at line 228
    [3.695191]
    [3.695191]
    None,