From 77e58bec66b03b1523e37846e97ab132df589574 Mon Sep 17 00:00:00 2001 From: Stackwright Bot Date: Sat, 16 May 2026 09:39:29 -0400 Subject: [PATCH] fix(ci): loop over pre.json conflicts during back-merge rebase --- .changeset/fix-back-merge-loop.md | 5 +++++ .github/workflows/release.yml | 20 +++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 .changeset/fix-back-merge-loop.md diff --git a/.changeset/fix-back-merge-loop.md b/.changeset/fix-back-merge-loop.md new file mode 100644 index 00000000..b2d83090 --- /dev/null +++ b/.changeset/fix-back-merge-loop.md @@ -0,0 +1,5 @@ +--- +"@stackwright/cli": patch +--- + +Upgrade the back-merge rebase conflict handler from a one-shot block to a loop. Dev can accumulate multiple alpha-bump commits that all modified `.changeset/pre.json` — the previous one-shot `||{ }` only resolved the first conflict. The loop now runs until all pre.json conflicts are resolved or an unexpected conflict is encountered. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 56d1e8ef..d9d9b0b9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -134,13 +134,19 @@ jobs: # # -X ours: when conflicts arise (e.g. version numbers in package.json), # prefer main's graduated stable versions over dev's stale alpha versions. - git rebase origin/main -X ours || { - # Expected modify/delete conflict on .changeset/pre.json: - # release deleted it via `changeset pre exit`, but dev's alpha-bump - # commit still referenced it. Accept main's deletion and continue. - git rm -f .changeset/pre.json 2>/dev/null || true - GIT_EDITOR=true git rebase --continue - } + git rebase origin/main -X ours || true + while [ -d ".git/rebase-merge" ]; do + if git status --porcelain | grep -q "pre.json"; then + # Expected: pre.json was deleted by `changeset pre exit` on main, + # but dev's alpha-bump commits still modified it. Accept the deletion. + git rm -f .changeset/pre.json 2>/dev/null || true + GIT_EDITOR=true git rebase --continue || true + else + echo "Unexpected rebase conflict — aborting" + git rebase --abort + exit 1 + fi + done # Re-enter prerelease mode so the next dev push produces alphas. if [ ! -f ".changeset/pre.json" ]; then pnpm changeset pre enter alpha