diff --git a/scripts/pr b/scripts/pr index aa76655d9e38..24ffef3f503d 100755 --- a/scripts/pr +++ b/scripts/pr @@ -72,7 +72,7 @@ Usage: scripts/pr prepare-run scripts/pr merge-verify scripts/pr merge-run - OPENCLAW_PR_MERGE_METHOD=merge preserves the PR commit series. + OPENCLAW_PR_MERGE_METHOD=merge|rebase preserves the PR commit series. USAGE } diff --git a/scripts/pr-lib/merge.sh b/scripts/pr-lib/merge.sh index 43a2d21e7595..79e1481c613c 100644 --- a/scripts/pr-lib/merge.sh +++ b/scripts/pr-lib/merge.sh @@ -245,8 +245,12 @@ merge_run() { merge_flag="--merge" merge_label="merge commit" ;; + rebase) + merge_flag="--rebase" + merge_label="rebase" + ;; *) - echo "Invalid OPENCLAW_PR_MERGE_METHOD: $merge_method (expected squash or merge)." + echo "Invalid OPENCLAW_PR_MERGE_METHOD: $merge_method (expected squash, merge, or rebase)." exit 2 ;; esac diff --git a/test/scripts/pr-wrappers.test.ts b/test/scripts/pr-wrappers.test.ts index d1e58977c991..6b072b0a554c 100644 --- a/test/scripts/pr-wrappers.test.ts +++ b/test/scripts/pr-wrappers.test.ts @@ -35,13 +35,13 @@ describe("scripts/pr wrappers", () => { expect(script).toContain('exec "$base" merge-run "$pr"'); }); - it("defaults to squash and allows an explicit merge commit", () => { + it("defaults to squash and allows commit-preserving merge methods", () => { const script = readScript("scripts/pr-lib/merge.sh"); expect(script).toContain("OPENCLAW_PR_MERGE_METHOD:-squash"); expect(script).toContain("--squash"); expect(script).toContain("--merge"); - expect(script).not.toContain("--rebase"); + expect(script).toContain("--rebase"); expect(script).toContain('echo "Merged via $merge_label."'); });