import and export marks

andybalholm
Mar 21, 2023, 8:40 PM
R3XMFPCYGXT5CNHYRNVZDGD2TDTCK6XGQ55SPJW56UEQQNV4R64AC

Dependencies

Change contents

  • edit in rust/src/main.rs at line 17
    [11.116]
    [3.291]
    opts.optopt(
    "m",
    "marks",
    "file to import and export marks",
    "MARKS-FILE",
    );
  • edit in rust/src/main.rs at line 29
    [3.97]
    [11.238]
    match matches.opt_str("m") {
    Some(filename) => stream.load_marks(&filename).unwrap(),
    None => (),
    }
  • replacement in rust/src/main.rs at line 40
    [3.5746][3.5746:5796](),[3.5796][3.130:197](),[3.130][3.130:197](),[3.197][3.5797:5836](),[3.5836][3.234:245](),[3.234][3.234:245](),[3.245][3.5837:5895]()
    let files = sandbox.get_files().unwrap();
    let parent = if i == 0 {
    None
    } else {
    Some(changes[i - 1].state)
    };
    stream.write_commit(&changes[i], parent, &files);
    [3.5746]
    [3.939]
    if !stream.already_exported(&changes[i].state) {
    let files = sandbox.get_files().unwrap();
    let parent = if i == 0 {
    None
    } else {
    Some(changes[i - 1].state)
    };
    stream.write_commit(&changes[i], parent, &files);
    }
    }
    match matches.opt_str("m") {
    Some(filename) => stream.save_marks(&filename).unwrap(),
    None => (),
  • edit in rust/src/fast_export.rs at line 2
    [3.327]
    [3.5896]
    use std::error::Error;
    use std::io::BufRead;
    use std::io::BufReader;
  • edit in rust/src/fast_export.rs at line 6
    [3.5916]
    [3.327]
    use libpijul::Base32;
    use regex::Regex;
    use simple_error::SimpleError;
  • edit in rust/src/fast_export.rs at line 19
    [3.406]
    [3.5941]
    mark_file: Vec<u8>,
  • edit in rust/src/fast_export.rs at line 32
    [3.599]
    [3.5967]
    mark_file: Vec::new(),
  • edit in rust/src/fast_export.rs at line 68
    [3.812]
    [3.812]
    writeln!(
    &mut self.mark_file,
    ":{} {}",
    self.max_commit_mark,
    c.state.to_base32()
    )
    .unwrap();
  • edit in rust/src/fast_export.rs at line 102
    [11.1104]
    [11.1104]
    }
    fn parse_line(re: &Regex, line: &str) -> Option<(i32, libpijul::Merkle)> {
    let caps = re.captures(line)?;
    let mark: i32 = caps[1].parse().ok()?;
    let state = libpijul::Merkle::from_base32(&caps[2].as_bytes())?;
    Some((mark, state))
  • edit in rust/src/fast_export.rs at line 110
    [11.1110]
    [11.1110]
    pub fn load_marks(&mut self, filename: &str) -> Result<(), Box<dyn Error>> {
    self.mark_file = std::fs::read(filename)?;
    let re = Regex::new(r"^:(\d+) (\w+)$")?;
    let mark_file_content: &[u8] = &self.mark_file;
    for line in BufReader::new(mark_file_content).lines() {
    let line = line?.to_string();
    match Self::parse_line(&re, &line) {
    Some((mark, state)) => {
    self.commit_marks.insert(state, mark);
    if mark > self.max_commit_mark {
    self.max_commit_mark = mark;
    }
    }
    None => {
    return Err(
    SimpleError::new(format!("syntax error in mark file: {}", line)).into(),
    )
    }
    }
    }
    return Ok(());
    }
    pub fn save_marks(&self, filename: &str) -> Result<(), Box<dyn Error>> {
    std::fs::write(&filename, &self.mark_file)?;
    Ok(())
    }
    pub fn already_exported(&self, state: &libpijul::Merkle) -> bool {
    self.commit_marks.contains_key(state)
    }
  • replacement in rust/Cargo.toml at line 6
    [3.218][3.218:315]()
    # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
    [3.218]
    [3.315]
    [profile.release]
    debug = true
  • edit in rust/Cargo.toml at line 16
    [2.841]
    regex = "1.7.2"
    simple-error = "0.1.9"
  • edit in rust/Cargo.lock at line 851
    [3.20481]
    [3.1817]
    "regex",
  • edit in rust/Cargo.lock at line 854
    [2.1041]
    [3.1827]
    "simple-error",
  • replacement in rust/Cargo.lock at line 988
    [3.23790][3.23790:23808]()
    version = "1.7.1"
    [3.23790]
    [3.23808]
    version = "1.7.2"
  • replacement in rust/Cargo.lock at line 990
    [3.23873][3.23873:23951]()
    checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
    [3.23873]
    [3.23951]
    checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
  • replacement in rust/Cargo.lock at line 999
    [3.24050][3.24050:24069]()
    version = "0.6.28"
    [3.24050]
    [3.24069]
    version = "0.6.29"
  • replacement in rust/Cargo.lock at line 1001
    [3.24134][3.24134:24212]()
    checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
    [3.24134]
    [3.24212]
    checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
  • edit in rust/Cargo.lock at line 1137
    [3.27292]
    [3.27292]
    [[package]]
    name = "simple-error"
    version = "0.1.12"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "01c1c2ededd95f93b1d65e7f8b5b17670e926bf9cbb55f8b91b26b0bd40d3259"