Skip to main content

merge_changes_only_inert_paths

Function merge_changes_only_inert_paths 

Source
pub fn merge_changes_only_inert_paths(
    repo: &Path,
    merge: &str,
) -> Result<bool, String>
Expand description

Whether every file this merge changed, against either parent, is inert by path_is_inert.

A semantic conflict is an interaction between the two branches’ changes, so the population that can possibly hold one is the union of the two parent diffs. A merge whose whole union is documentation cannot fail a build-and-test command in a way the parents pass, so harvesting it buys three builds’ worth of nothing. Skipping it is a population restriction, not an optimization detail: callers record it rather than applying it silently, because it changes which merges the denominator counts.

An empty union — a merged tree identical to both parents — returns false: it is strange enough to be worth observing rather than assuming away.

§Errors

The merge cannot be resolved to two parents, or git fails.