mr: what changed between two revisions of a merge request !245

merged merged by cmc on 2026-09-04 17:40 UTC · krz/gitbay:mr-range-diff into main

Discussion

cmc

Stacked on !244. Finishes #111.

A push stales every review and nothing said what moved. A diff of the two heads cannot answer it — that shows the whole branch again — and the previous head was overwritten in place, so the question had no data behind it. mr_heads records one row per revision with its merge base; mr revisions lists them, mr range-diff compares the last two or any two named with --from/--to, and the MR page links to it beside the stale marks once there is more than one revision.

Two decisions worth reviewing:

  • Each side carries its own base. The target moves; measuring both revisions against today's base would attribute every commit that landed on the target in between to this MR's author.
  • --creation-factor=80, not git's default 60. The default is tuned for comparing two independently developed patch series, where refusing to pair is safe. Here both sides are known to be revisions of one branch, and the commonest revision — a commit adding a file, with one line inside it later changed — is not paired at 60: git reports one commit deleted and another added, which tells a reviewer nothing. It pairs at 80, and genuinely unrelated commits are still left unpaired there. I measured both before picking the number, and reproduced the behaviour outside gitbay first to confirm it was git's heuristic and not my invocation.

#111's fourth bullet (mr diff truncating silently) landed in v1.11.0 with #117, so this closes it.

Closes #111

retargeted from mr-pending-review to main: !244 merged

2026-09-04 17:40 UTC