Repository navigation
Conversation
…ajor branch
logchange.py forward-port failed releasing 9.11.0: it tried to cherry-pick 9.x feature commits onto branch_10x and main.
* Only cherry-pick commits touching changelog/v{version}/. Selecting everything under changelog/ picked up every feature commit with a changelog entry since the release branch diverged from the target.
* Pull each target branch (fast-forward only) before cherry-picking, so the final push isn't rejected.
* Resolve modify/delete conflicts confined to changelog/unreleased/ by removing the entry; -X ours doesn't settle those. Skip a pick that is already applied.
* Discard other versions' regenerated version-summary.md files, which otherwise block the next checkout.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Disclaimer: I don't do python. Just vibing with Claude here as triage issues I found. Nonetheless it had this to say when I asked for verification: |
|
Thanks David for fixing this. It will be the third attempt at a not-terrible RM experience handling these yml files. I was close but not close enough. Below is some (AI) comments...
I checked out the branch and verified the claims empirically — the core fix is correct, and the bug it fixes is definitely real. Against the actual 9.11.0 history (
I also reproduced the modify/delete case in a scratch repo and confirmed that A few things below, only the first two of which I'd consider worth acting on before merge. 1.
|
janhoy
left a comment
There was a problem hiding this comment.
See review feedback in other comment
|
I don't have enough interest/know-how to review python or the release wizard details (like this). Maybe just have your AI do what it thinks is best and we merge. |
With the symmetric-difference range git computes patch-ids for every commit in the difference before path limiting is applied. For a release on an older major branch that is thousands of commits per target (roughly 3.5 minutes each against main and branch_10x for 9.11.0), spent silently in a wizard step that runs unattended with --push. Without the flag the same selection takes a fraction of a second. Re-run idempotency is unaffected: a commit that is already applied cherry-picks to an empty change, which recover_cherry_pick skips.
…released
recover_cherry_pick removed any conflicting path under changelog/unreleased/.
An identically named entry on the target that belongs to a different
version would be deleted silently and then pushed. Apply the same
counterpart check as the stale-entry pass: the file must also exist in
changelog/v{version}/. Otherwise fall through to the existing error path
and leave the conflict for the release manager.
…ries The command checks out several branches and discards generated files with git restore, so uncommitted edits to tracked files that checkout carried along were silently lost. Require a clean tree up front. git restore only resets tracked files. A version folder whose version-summary.md is not tracked on one branch but is on the next gets an untracked copy from generation that blocks the checkout. Remove those with git clean limited to that filename pattern.
…mitting Only the target branches were pulled. If the local release branch was behind the remote, the final --push of it was rejected after all the target work had been done. Pull it the same way in step 1.
With core.quotepath at its default, git quotes and escapes non-ASCII path names in --name-only output. A changelog entry named from a JIRA summary with such characters then failed the unreleased/ prefix check in recover_cherry_pick and the subsequent git rm. Use -z for both path listings.
Unreachable in dry-run today since a dry-run git() never raises, but the function ran git rm and cherry-pick --continue for real if it were ever called. Return early instead.
The step-3 sentence read awkwardly after the pathspec change. Also tell the release manager that the script refuses a dirty tree and fast-forwards their local branches, and bring the argparse description in line.
|
I had Claude Code (Fable) work through my own review comments above (or rather Claude Opus's comments), one commit per item, on this branch. I also merged in
I think this is ready to merge once CI is happy. |
|
Hopefully, changelog handling will now be more friction-less for future RM's. It was a good call to move most of the mechanics into @sigram you may want to port this change into your release branch |
|
@janhoy will do, thanks! |
… major branch
logchange.py forward-port failed releasing 9.11.0: it tried to cherry-pick 9.x feature commits onto branch_10x and main.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com