Describe the bug
When using GitHub's squash merge with squash_merge_commit_message: COMMIT_MESSAGES, GitHub formats each commit in the squash body with a * (markdown bullet) prefix. splitMessages does not strip this prefix, so only the squash commit title is parsed as a conventional commit — the body entries are silently ignored.
This means multi-commit PRs with different conventional commit types (e.g. feat + fix) only produce one changelog entry (from the PR title), even though release-please documents support for multiple conventional commits in a single commit.
Expected behavior
Given a squash merge commit with this body:
feat: #37 test release-please without bullet prefix
* fix: #37 add inline comment to repo URL
* feat: #37 add comment to update check
Release-please should parse all three conventional commits and produce both a Features and Bug Fixes section in the changelog.
Actual behavior
Only the commit title (feat: ...) is parsed. The * fix: ... and * feat: ... entries in the body are ignored because the * prefix prevents the splitMessages regex from matching:
/\r?\n\r?\n(?=(?:feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.*?\))?: )/
Reproduction
I verified this with two PRs on the same repo (tyrantkhan/bitbucket-cli):
Test 1 — with * bullets (fails):
- PR #35 squash merged as commit
a0f187a
- Squash commit body contained
* fix: ... and * feat: ... (GitHub's default COMMIT_MESSAGES format)
- Release-please changelog: only Features (from PR title)
Test 2 — without * bullets (works):
- PR #38 squash merged as commit
59b2219
- Squash commit body had
* prefixes manually removed and blank line separation added
- Release-please changelog: both Features and Bug Fixes appeared
Result: Release PR #36 shows both entries from the manually edited commit, but only the title entry from the default GitHub format.
Environment
- release-please version: 17.3.0 (also tested on 17.1.3 via
release-please-action@v4)
- GitHub repo setting:
squash_merge_commit_message: COMMIT_MESSAGES, squash_merge_commit_title: COMMIT_OR_PR_TITLE
Context
Suggested fix
Strip leading * or - from lines before applying the splitMessages regex, or update the regex lookahead to optionally match a bullet prefix:
/\r?\n\r?\n(?=\*?\s*(?:feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.*?\))?: )/
Describe the bug
When using GitHub's squash merge with
squash_merge_commit_message: COMMIT_MESSAGES, GitHub formats each commit in the squash body with a*(markdown bullet) prefix.splitMessagesdoes not strip this prefix, so only the squash commit title is parsed as a conventional commit — the body entries are silently ignored.This means multi-commit PRs with different conventional commit types (e.g.
feat+fix) only produce one changelog entry (from the PR title), even though release-please documents support for multiple conventional commits in a single commit.Expected behavior
Given a squash merge commit with this body:
Release-please should parse all three conventional commits and produce both a Features and Bug Fixes section in the changelog.
Actual behavior
Only the commit title (
feat: ...) is parsed. The* fix: ...and* feat: ...entries in the body are ignored because the*prefix prevents thesplitMessagesregex from matching:/\r?\n\r?\n(?=(?:feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.*?\))?: )/Reproduction
I verified this with two PRs on the same repo (tyrantkhan/bitbucket-cli):
Test 1 — with
*bullets (fails):a0f187a* fix: ...and* feat: ...(GitHub's defaultCOMMIT_MESSAGESformat)Test 2 — without
*bullets (works):59b2219*prefixes manually removed and blank line separation addedResult: Release PR #36 shows both entries from the manually edited commit, but only the title entry from the default GitHub format.
Environment
release-please-action@v4)squash_merge_commit_message: COMMIT_MESSAGES,squash_merge_commit_title: COMMIT_OR_PR_TITLEContext
splitMessagesnot handling multiple conventional commits)*bullet prefix)Suggested fix
Strip leading
*or-from lines before applying thesplitMessagesregex, or update the regex lookahead to optionally match a bullet prefix:/\r?\n\r?\n(?=\*?\s*(?:feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.*?\))?: )/