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.