More informative diff --short

pmeunier
Jul 21, 2021, 1:11 PM
AGTMM5U7XETFXBBS6CXIOXRQ7CDWQWVR62TR3QPI6LMVAK4J3HEQC

Dependencies

  • [2] HSEYMLO2 Adding an untracked change iterator
  • [3] VSTBTRYE Fixing a compilation error
  • [4] BZSC7VMY address clippy lints
  • [5] ZPGXYRIH pijul diff: println should really be writeln everywhere
  • [6] YDKNUL6B Add `diff --short` that lists changes without showing them
  • [7] CCFJ7VO3 Renaming "Record" to "Hunk" in the changes
  • [8] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [9] I52XSRUH Massive cleanup, and simplification

Change contents

  • replacement in pijul/src/commands/diff.rs at line 145
    [3.81][3.81:123]()
    let mut changes = Vec::new();
    [3.81]
    [3.123]
    let mut changes = BTreeMap::new();
  • replacement in pijul/src/commands/diff.rs at line 147
    [3.169][3.169:209](),[3.209][3.825:1300]()
    changes.push(match ch {
    Hunk::FileMove { path, .. } => format!("MV {}\n", path),
    Hunk::FileDel { path, .. } => format!("D {}\n", path),
    Hunk::FileUndel { path, .. } => format!("UD {}\n", path),
    Hunk::FileAdd { path, .. } => format!("A {}", path),
    Hunk::SolveNameConflict { path, .. } => format!("SC {}", path),
    Hunk::UnsolveNameConflict { path, .. } => format!("UC {}", path),
    [3.169]
    [3.1300]
    use std::fmt::Write;
    match ch {
    Hunk::FileMove { path, .. } => {
    write!(changes.entry(path).or_insert(String::new()), "MV,")?
    }
    Hunk::FileDel { path, .. } => {
    write!(changes.entry(path).or_insert(String::new()), "D,")?
    }
    Hunk::FileUndel { path, .. } => {
    write!(changes.entry(path).or_insert(String::new()), "UD,")?
    }
    Hunk::FileAdd { path, .. } => {
    write!(changes.entry(path).or_insert(String::new()), "A,")?
    }
    Hunk::SolveNameConflict { path, .. } => {
    write!(changes.entry(path).or_insert(String::new()), "SC,")?
    }
    Hunk::UnsolveNameConflict { path, .. } => {
    write!(changes.entry(path).or_insert(String::new()), "UC,")?
    }
  • replacement in pijul/src/commands/diff.rs at line 170
    [3.4812][3.4812:4861]()
    } => format!("M {}", path),
    [3.4812]
    [3.1334]
    } => write!(changes.entry(path).or_insert(String::new()), "M,")?,
  • replacement in pijul/src/commands/diff.rs at line 174
    [3.4981][3.4981:5030]()
    } => format!("R {}", path),
    [3.4981]
    [3.1375]
    } => write!(changes.entry(path).or_insert(String::new()), "R,")?,
  • replacement in pijul/src/commands/diff.rs at line 178
    [3.5157][3.5157:5206]()
    } => format!("SC {}", path),
    [3.5157]
    [3.1423]
    } => write!(changes.entry(path).or_insert(String::new()), "SC,")?,
  • replacement in pijul/src/commands/diff.rs at line 182
    [3.5335][3.5335:5384]()
    } => format!("UC {}", path),
    [3.5335]
    [3.1473]
    } => write!(changes.entry(path).or_insert(String::new()), "SC,")?,
  • replacement in pijul/src/commands/diff.rs at line 186
    [3.5509][3.5509:5558](),[3.5558][3.1479:1499](),[3.1479][3.1479:1499]()
    } => format!("RZ {}", path),
    });
    [3.5509]
    [3.1499]
    } => write!(changes.entry(path).or_insert(String::new()), "RZ,")?,
    }
  • replacement in pijul/src/commands/diff.rs at line 189
    [3.1513][3.1513:1579](),[3.1579][3.5559:5591](),[3.5591][3.0:45]()
    changes.sort_unstable();
    changes.dedup();
    for ch in changes {
    writeln!(stdout, "{}", ch)?;
    [3.1513]
    [2.1885]
    let al = changes.iter().map(|(_, v)| v.len()).max().unwrap_or(0);
    let spaces: String = std::iter::repeat(' ').take(al).collect();
    for (k, v) in changes {
    let (sp, _) = spaces.split_at(al - v.len());
    writeln!(stdout, "{}{} {}", v.trim_end_matches(','), sp, k)?;