From 8ece285f5f812d81a1ed931ee3f3d3941a732303 Mon Sep 17 00:00:00 2001 From: shaw Date: Mon, 4 Aug 2025 17:48:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20GitHub=20Actions=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=A3=80=E6=B5=8B=E5=AF=B9=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - 之前的版本检测逻辑使用 HEAD~1..HEAD 只能获取直接的父提交变更 - 对于合并提交,这会导致忽略所有合并进来的实际代码变更 - 导致明明有重要代码更新却显示 "No significant changes" 解决方案: - 添加合并提交检测逻辑 - 对于合并提交,获取从合并基准点到 HEAD 的所有变更 - 确保所有合并进来的文件变更都被正确检测 这样可以确保版本自动发布工作流正确识别所有代码变更。 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .github/workflows/auto-release-pipeline.yml | 24 +++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-release-pipeline.yml b/.github/workflows/auto-release-pipeline.yml index 12a59522..6e7bb904 100644 --- a/.github/workflows/auto-release-pipeline.yml +++ b/.github/workflows/auto-release-pipeline.yml @@ -24,8 +24,28 @@ jobs: - name: Check if version bump is needed id: check run: | - # 获取当前提交的文件变更 - CHANGED_FILES=$(git diff --name-only HEAD~1..HEAD 2>/dev/null || git diff --name-only $(git rev-list --max-parents=0 HEAD)..HEAD) + # 检测是否是合并提交 + PARENT_COUNT=$(git rev-list --parents -n 1 HEAD | wc -w) + PARENT_COUNT=$((PARENT_COUNT - 1)) + echo "Parent count: $PARENT_COUNT" + + if [ "$PARENT_COUNT" -gt 1 ]; then + # 合并提交:获取合并进来的所有文件变更 + echo "Detected merge commit, getting all merged changes" + # 获取合并基准点 + MERGE_BASE=$(git merge-base HEAD^1 HEAD^2 2>/dev/null || echo "") + if [ -n "$MERGE_BASE" ]; then + # 获取从合并基准到 HEAD 的所有变更 + CHANGED_FILES=$(git diff --name-only $MERGE_BASE..HEAD) + else + # 如果无法获取合并基准,使用第二个父提交 + CHANGED_FILES=$(git diff --name-only HEAD^2..HEAD) + fi + else + # 普通提交:获取相对于上一个提交的变更 + CHANGED_FILES=$(git diff --name-only HEAD~1..HEAD 2>/dev/null || git diff --name-only $(git rev-list --max-parents=0 HEAD)..HEAD) + fi + echo "Changed files:" echo "$CHANGED_FILES"