pub async fn merge_squash(
repo: &Path,
branch: &str,
message: &str,
) -> Result<GitOut>Expand description
git merge --squash of branch, followed by a commit under message.
Two git calls because --squash only stages the result — unlike
merge_no_ff there is no merge commit for --no-edit to write, and
skipping the second call is exactly the trap land’s module doc warns
about: a squash that inherits branch’s own single-commit subject
(magi: candidate A (uncommitted work)) instead of message. Returns the
--squash step’s own output, unrun commit included, when staging itself
fails (a conflict), so a caller sees what actually went wrong rather than
a git commit complaint about nothing being staged.