diff --git a/.github/workflows/promote-dev-to-main.yml b/.github/workflows/promote-dev-to-main.yml index 0edf788e..4c48c9bf 100644 --- a/.github/workflows/promote-dev-to-main.yml +++ b/.github/workflows/promote-dev-to-main.yml @@ -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}" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4c10c767..24449862 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -37,7 +37,7 @@ SnowLuma 使用 **`main` + `dev`** 双分支模型: 打开仓库 Actions 页面 → `Promote Dev to Main` → `Run workflow`。可选输入: - `auto_merge`:是否启用 auto-merge(默认 `true`)。 -- `merge_method`:`merge` / `squash` / `rebase`(默认 `merge`)。 +- `merge_method`:`squash` / `merge` / `rebase`(默认 `squash`,把 `dev` 上的多个增量提交压成一个再合入 `main`,保持 `main` 历史线性)。 工作流会按照当前 `dev` 与 `main` 的差异开 / 更新 PR。