Skip to content

docs(branching): merge-commit promotions so release-please auto-cuts releases#264

Merged
parth0025 merged 1 commit into
stagingfrom
docs/release-merge-commit-promotion
Jun 19, 2026
Merged

docs(branching): merge-commit promotions so release-please auto-cuts releases#264
parth0025 merged 1 commit into
stagingfrom
docs/release-merge-commit-promotion

Conversation

@parth0025

Copy link
Copy Markdown
Collaborator

Permanent fix for "release tag not cut after promotion"

Root cause: the staging β†’ main promotion was squash-merged, collapsing every feat/fix into a single chore(release) commit. release-please reads Conventional Commits on main, saw only a chore, and cut nothing β€” so every release (through v14.4.0) needed a manual tag + changelog.

Fix (Option 1 β€” chosen): merge the promotion with a merge commit instead of squashing. Then:

  • release-please sees the real commits β†’ auto-opens its Release PR β†’ tag + GitHub Release are created automatically. No more manual cuts.
  • main stays an ancestor of staging, so back-merges stop conflicting on release files β€” a second recurring pain gone.

This PR updates BRANCHING.md:

  • Merge-method rule: promotions must use a merge commit (hotfixes may still squash).
  • Rewritten release steps (head = staging, merge commit, release-please cuts the tag).
  • A documented manual fallback for if a promotion ever gets squashed by mistake.

⚠️ One settings change needed (admin)

On GitHub β†’ Settings β†’ Branches β†’ main (or the equivalent Ruleset): turn OFF "Require linear history" and ensure "Allow merge commits" is enabled. Without that, GitHub won't offer the merge-commit option for the promotion. Docs-only change here; the setting is what activates it.

πŸ€– Generated with Claude Code

Squash-merging the staging->main promotion collapses every feat/fix into one
chore commit, so release-please sees nothing releasable and never cuts the
release (hit through v14.4.0, cut manually each time). Merging the promotion
with a merge commit puts the conventional commits on main, so release-please
opens its Release PR and tags automatically -- and keeps main an ancestor of
staging, removing the back-merge conflicts too.

Documents the merge-method rule, the new release steps, and a manual fallback.
Pairs with a branch-protection change (allow merge commits / drop required
linear history on main).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

βš™οΈ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bc298c47-1187-45f7-a35a-b4c1810415e7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • πŸ” Trigger review
✨ Finishing Touches
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/release-merge-commit-promotion

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@parth0025 parth0025 merged commit 18bb4be into staging Jun 19, 2026
4 checks passed
@parth0025 parth0025 deleted the docs/release-merge-commit-promotion branch June 19, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant