[merge] dev & ci: default promote-dev-to-main merge strategy to squash

Switch default merge_method from 'merge' to 'squash' so dev->main PRs collapse the dev branch's incremental commits into one squash commit on main, keeping main's history linear and release-tag-friendly. Affects: workflow_dispatch input default, decide-step initial value + workflow_dispatch fallback, both push-trigger branches (tag + commit-msg), and the case-statement fallback in the auto-merge step. CONTRIBUTING.md updated to reflect the new default.
This commit is contained in:
手瓜一十雪
2026-05-09 15:06:54 +08:00
parent c3b328f91d
commit 3afbcfaae5
2 changed files with 10 additions and 10 deletions
+9 -9
View File
@@ -13,8 +13,8 @@ on:
merge_method:
description: Merge strategy when auto-merging
type: choice
options: ['merge', 'squash', 'rebase']
default: 'merge'
options: ['squash', 'merge', 'rebase']
default: 'squash'
permissions:
contents: read
@@ -45,26 +45,26 @@ jobs:
set -euo pipefail
run='false'
auto_merge='true'
merge_method='merge'
merge_method='squash'
reason=''
case "${EVENT_NAME}" in
workflow_dispatch)
run='true'
auto_merge="${INPUT_AUTO_MERGE:-true}"
merge_method="${INPUT_MERGE_METHOD:-merge}"
merge_method="${INPUT_MERGE_METHOD:-squash}"
reason='Manual workflow_dispatch'
;;
push)
if [ "${REF_TYPE}" = 'tag' ]; then
run='true'
merge_method='merge'
merge_method='squash'
reason="Tag push: ${REF}"
elif [ "${REF}" = 'refs/heads/dev' ]; then
msg="${HEAD_COMMIT_MSG:-}"
if printf '%s' "${msg}" | grep -qiE '^\[merge\]|^chore\(release\):'; then
run='true'
merge_method='merge'
merge_method='squash'
reason='Commit message prefix on dev ([merge] or chore(release):)'
else
reason='Commit on dev without [merge] / chore(release): prefix'
@@ -235,11 +235,11 @@ jobs:
MERGE_METHOD: ${{ needs.decide.outputs.merge_method }}
run: |
set -euo pipefail
method_flag='--merge'
method_flag='--squash'
case "${MERGE_METHOD}" in
squash) method_flag='--squash' ;;
merge) method_flag='--merge' ;;
rebase) method_flag='--rebase' ;;
*) method_flag='--merge' ;;
*) method_flag='--squash' ;;
esac
gh pr merge "${PR_NUMBER}" --auto ${method_flag}
echo "::notice::Auto-merge enabled on PR #${PR_NUMBER} with strategy: ${MERGE_METHOD}"