Early stop in the diff algorithms for diff --short

pmeunier
Dec 7, 2021, 1:19 PM
OY3CGEHQCHMCPWQAXCW2SZCDIDTE2OB6CRFIDT7E2TCFFKXQ43XAC

Dependencies

  • [2] PIQCNEEB Upgrading to Clap 3.0.0-alpha.5
  • [3] RMDMAYRX Adding a root inode (aka supporting submodules)
  • [4] IYJZVLET Cleaning up the literate programming bits
  • [5] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [6] Z6FWHKCA Improving the UI around zombie conflicts
  • [7] 3AMEP2Y5 More convenient interface for channels
  • [8] 4DNDMC7I Fixing a number of bugs related to encodings (extra newlines + misdetection in linux2x)
  • [9] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [10] GHO6DWPI Refactoring iterators
  • [*] QL6K2ZM3 Tags
  • [*] DX2FO4HZ Tag CLI cleanup
  • [*] I24UEJQL Various post-fire fixes
  • [*] OU243LAB Support for staging
  • [*] 5DVRL6MF Hard-unrecord
  • [*] G7VOM2IM Returning an error when recording non-existent paths
  • [*] 2VXTRPO4 Custom diff separators
  • [*] 3EMLWXLH Formatting

Change contents

  • edit in pijul/src/commands/tag.rs at line 224
    [13.1054]
    [2.246]
    false,
  • edit in pijul/src/commands/reset.rs at line 116
    [14.7696]
    [2.330]
    false,
  • edit in pijul/src/commands/record.rs at line 309
    [15.1329]
    [2.426]
    false,
  • edit in pijul/src/commands/record.rs at line 323
    [15.1694]
    [2.485]
    false,
  • edit in pijul/src/commands/mod.rs at line 80
    [16.2019]
    [2.777]
    false,
  • edit in pijul/src/commands/diff.rs at line 70
    [4.174593]
    [2.1321]
    true,
  • edit in libpijul/src/working_copy/filesystem.rs at line 308
    [17.601]
    [18.0]
    false,
  • edit in libpijul/src/record.rs at line 286
    [4.492781]
    [18.46]
    stop_early: bool,
  • edit in libpijul/src/record.rs at line 328
    [19.151]
    [18.161]
    stop_early,
  • edit in libpijul/src/record.rs at line 519
    [19.549]
    [18.196]
    stop_early,
  • edit in libpijul/src/record.rs at line 897
    [4.499537]
    [18.233]
    stop_early: bool,
  • edit in libpijul/src/record.rs at line 927
    [3.6946]
    [3.6946]
    stop_early,
  • edit in libpijul/src/record.rs at line 961
    [3.7549]
    [3.7549]
    stop_early: bool,
  • edit in libpijul/src/record.rs at line 1009
    [3.9185]
    [3.9185]
    stop_early,
  • edit in libpijul/src/diff/mod.rs at line 134
    [4.794282]
    [4.794282]
    stop_early: bool,
  • replacement in libpijul/src/diff/mod.rs at line 168
    [4.115][4.796653:796713](),[4.930][4.796653:796713](),[4.796653][4.796653:796713]()
    let dd = diff::diff(&lines_a, &lines_b, algorithm);
    [4.930]
    [4.796713]
    let dd = diff::diff(&lines_a, &lines_b, algorithm, stop_early);
  • replacement in libpijul/src/diff/diff.rs at line 15
    [4.801776][4.801776:801952]()
    pub(super) fn diff(lines_a: &[Line], lines_b: &[Line], algorithm: Algorithm) -> D {
    let mut dd = diffs::Replace::new(D(Vec::with_capacity(lines_a.len() + lines_b.len())));
    [4.801776]
    [4.801952]
    pub(super) fn diff(lines_a: &[Line], lines_b: &[Line], algorithm: Algorithm, stop_early: bool) -> D {
    let mut dd = diffs::Replace::new(D {
    r: Vec::with_capacity(lines_a.len() + lines_b.len()),
    stop_early,
    });
  • replacement in libpijul/src/diff/diff.rs at line 30
    [4.802185][4.802185:802204]()
    .unwrap(),
    [4.802185]
    [4.802204]
    .unwrap_or(()),
  • replacement in libpijul/src/diff/diff.rs at line 40
    [4.802409][4.802409:802428]()
    .unwrap(),
    [4.802409]
    [4.802428]
    .unwrap_or(()),
  • replacement in libpijul/src/diff/diff.rs at line 45
    [4.802528][4.802528:802564]()
    pub struct D(pub Vec<Replacement>);
    [4.802528]
    [4.802564]
    pub struct D {
    pub r: Vec<Replacement>,
    pub stop_early: bool,
    }
  • replacement in libpijul/src/diff/diff.rs at line 52
    [4.802607][4.802607:802628]()
    self.0.len()
    [4.802607]
    [4.802628]
    self.r.len()
  • replacement in libpijul/src/diff/diff.rs at line 59
    [4.802752][4.802752:802776]()
    self.0.index(i)
    [4.802752]
    [4.802776]
    self.r.index(i)
  • replacement in libpijul/src/diff/diff.rs at line 65
    [4.802884][4.802884:802912]()
    self.0.index_mut(i)
    [4.802884]
    [4.802912]
    self.r.index_mut(i)
  • replacement in libpijul/src/diff/diff.rs at line 82
    [4.803289][4.803289:803323]()
    self.0.push(Replacement {
    [4.803289]
    [4.803323]
    self.r.push(Replacement {
  • replacement in libpijul/src/diff/diff.rs at line 89
    [4.803444][4.803444:803459]()
    Ok(())
    [4.803444]
    [4.803459]
    if self.stop_early {
    Err(())
    } else {
    Ok(())
    }
  • replacement in libpijul/src/diff/diff.rs at line 97
    [4.803629][4.803629:803663]()
    self.0.push(Replacement {
    [4.803629]
    [4.803663]
    self.r.push(Replacement {
  • replacement in libpijul/src/diff/diff.rs at line 104
    [4.803784][4.803784:803799]()
    Ok(())
    [4.803784]
    [4.803799]
    if self.stop_early {
    Err(())
    } else {
    Ok(())
    }
  • replacement in libpijul/src/diff/diff.rs at line 121
    [4.804082][4.804082:804116]()
    self.0.push(Replacement {
    [4.804082]
    [4.804116]
    self.r.push(Replacement {
  • replacement in libpijul/src/diff/diff.rs at line 128
    [4.804234][4.804234:804249]()
    Ok(())
    [4.804234]
    [4.804249]
    if self.stop_early {
    Err(())
    } else {
    Ok(())
    }
  • replacement in libpijul/src/diff/diff.rs at line 150
    [4.804804][4.804804:804982]()
    match self.0.binary_search_by(|repl| repl.old.cmp(&line)) {
    Ok(i) if self.0[i].old_len > 0 => Some(Deleted {
    replaced: self.0[i].new_len > 0,
    [4.804804]
    [4.804982]
    match self.r.binary_search_by(|repl| repl.old.cmp(&line)) {
    Ok(i) if self.r[i].old_len > 0 => Some(Deleted {
    replaced: self.r[i].new_len > 0,
  • replacement in libpijul/src/diff/diff.rs at line 156
    [4.805087][4.805087:805229]()
    Err(i) if line < self.0[i - 1].old + self.0[i - 1].old_len => Some(Deleted {
    replaced: self.0[i - 1].new_len > 0,
    [4.805087]
    [4.805229]
    Err(i) if line < self.r[i - 1].old + self.r[i - 1].old_len => Some(Deleted {
    replaced: self.r[i - 1].new_len > 0,