Skip to main content

plan

Function plan 

Source
pub fn plan(
    dir: &Path,
    base: Option<&str>,
    ours: Option<&str>,
    theirs: Option<&str>,
    present: Option<&Present>,
) -> Result<Plan, Box<dyn Error>>
Expand description

Read the merge base × ours × theirs (each defaulting as weave check does: HEAD, the operation in progress, their merge base) and classify every file both sides changed.

A file git’s line merge merges cleanly is still examined: when the answer in the tree (present) is git’s merge, that merge must pass weave’s own merge check — no line both sides kept lost, nothing stated twice, no case or map key twice (weave_core::verify::verify); git calling it clean is not enough (two features each adding case 3: to one switch is line-clean). When it fails, or the tree holds something else, the file is a unit like any conflicted one.