Concatenating edits with order conflict resolutions (if relevant), and parsing the text format of the result

[?]
Nov 27, 2020, 11:18 AM
KVBLRDOUFRYB6BPOQJDD7OVBYMTTPDAUX7CJ5DC3U7WFRI5OLWRAC

Dependencies

  • [2] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [3] I52XSRUH Massive cleanup, and simplification
  • [4] JRSBH6HT Identification of line numbers in replacements
  • [5] ISQJRA3O Fixing the parsing of zombie resurrection in the change text format

Change contents

  • replacement in libpijul/src/diff/replace.rs at line 62
    [2.781824][2.781824:781873]()
    let change = Atom::NewVertex(NewVertex {
    [2.781824]
    [2.781873]
    let change = NewVertex {
  • replacement in libpijul/src/diff/replace.rs at line 69
    [2.782086][2.782086:782098]()
    });
    [2.782086]
    [2.782098]
    };
  • replacement in libpijul/src/diff/replace.rs at line 78
    [2.782480][2.782480:782529]()
    replacement: change,
    [2.782480]
    [2.782529]
    replacement: Atom::NewVertex(change),
  • edit in libpijul/src/diff/replace.rs at line 83
    [2.782706]
    [2.782706]
    }
    }
    Some(Record::SolveOrderConflict { change: c, local }) => {
    // If the last record solved a conflict, replace
    // the empty "solving" line with this change.
    if change.up_context.len() == 1 && change.up_context[0].change.is_none() {
    if let Atom::NewVertex(mut c) = c {
    c.down_context.extend(change.down_context.into_iter());
    c.start = change.start;
    c.end = change.end;
    self.rec.actions.push(Record::SolveOrderConflict {
    change: Atom::NewVertex(c),
    local,
    });
    return Ok(());
    }
    } else {
    self.rec
    .actions
    .push(Record::SolveOrderConflict { change: c, local })
  • replacement in libpijul/src/diff/replace.rs at line 114
    [2.783007][2.783007:783027]()
    change,
    [2.783007]
    [2.783027]
    change: Atom::NewVertex(change),
  • edit in libpijul/src/change.rs at line 1795
    [2.893811]
    [2.893811]
    print_change_contents(&mut w, changes, change, change_contents)?;
  • edit in libpijul/src/change.rs at line 1806
    [2.894217]
    [2.894217]
    print_change_contents(&mut w, changes, change, change_contents)?;
  • edit in libpijul/src/change.rs at line 1817
    [2.894540]
    [2.894540]
    print_change_contents(&mut w, changes, change, change_contents)?;
  • edit in libpijul/src/change.rs at line 2257
    [2.912754][2.912754:912917]()
    }
    if h.starts_with("+") {
    text_changes::parse_line_add(h, repl, contents_)
  • edit in libpijul/src/change.rs at line 2258
    [2.912947]
    [2.912947]
    text_changes::parse_line_add(h, repl, contents_)
  • replacement in libpijul/src/change.rs at line 2295
    [2.914758][2.914758:914819]()
    if let Some(cap) = CONTEXT.captures(h) {
    [2.914758]
    [2.914819]
    if h.starts_with("+ ") {
    if let Atom::NewVertex(ref mut change) = change {
    if change.start == change.end {
    change.start = ChangePosition(contents_.len() as u64);
    }
    text_changes::parse_line_add(h, change, contents_)
    }
    } else if let Some(cap) = CONTEXT.captures(h) {
  • replacement in libpijul/src/change.rs at line 2310
    [2.915263][2.915263:915427]()
    change.start = ChangePosition(contents_.len() as u64);
    change.end = ChangePosition(contents_.len() as u64);
    [2.915263]
    [2.915427]
    if let (Some(new_start), Some(new_end)) = (cap.get(4), cap.get(5)) {
    let new_start = new_start.as_str().parse::<u64>().unwrap();
    let new_end = new_end.as_str().parse::<u64>().unwrap();
    change.start = ChangePosition(contents_.len() as u64);
    change.end =
    ChangePosition(contents_.len() as u64 + new_end - new_start);
    offsets.insert(new_end, change.end);
    }