pub(crate) fn analyze(
units: &[Unit],
history: &BTreeMap<String, History>,
policy: Policy<'_>,
required_bump: impl FnMut(&Unit, &str) -> Result<Bump, ProposalError>,
) -> Result<Proposal, ProposalError>Expand description
Changed units receive their override or the larger of the bumps their commits and API analysis require. Applications take a patch bump when no commit asks for more. A breaking change is a minor bump below 1.0.0 and otherwise a major bump. Applications depending on a changed unit are bumped too. A unit at 0.0.0 without a tag takes the same bump rules from its whole history, ignoring API analysis, as a first release. A unit without history is a first release at its override or its current version.