Skip to content

Commit c13397c

Browse files
committed
refactor: PR作成ロジックを改善し、リモートブランチの存在確認を追加
1 parent 15ad1a0 commit c13397c

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

.github/workflows/prepare-release.yml

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -186,27 +186,39 @@ jobs:
186186
BASE='${{ steps.target.outputs.base }}'
187187
HEAD_BR='${{ steps.push.outputs.branch }}'
188188
set -e
189-
echo "Fetching full history for reliable diff..."
190-
git fetch origin "$BASE" --depth=0 || true
191-
git fetch origin "$HEAD_BR" --depth=0 || true
192-
# Ensure we have refs
193-
git rev-parse "origin/$BASE" >/dev/null
194-
git rev-parse "$HEAD_BR" >/dev/null
189+
echo "Fetching refs for base=$BASE head=$HEAD_BR ..."
190+
# Fetch only the required branches (full history already available if checkout used fetch-depth:0)
191+
git fetch origin "$BASE" "$HEAD_BR" --no-tags --prune || true
195192
196-
# Primary commit ahead count (commits reachable from HEAD_BR not in base)
197-
AHEAD=$(git rev-list --right-only --count "origin/$BASE...$HEAD_BR" || echo 0)
193+
# Verify remote release branch exists
194+
if ! git ls-remote --exit-code origin "$HEAD_BR" >/dev/null 2>&1; then
195+
echo "Release branch '$HEAD_BR' not found on remote yet (skipping PR creation check)." >&2
196+
echo "ahead_commits=0" >> $GITHUB_OUTPUT
197+
echo "file_diff=0" >> $GITHUB_OUTPUT
198+
echo "release_files_changed=0" >> $GITHUB_OUTPUT
199+
echo "different=false" >> $GITHUB_OUTPUT
200+
exit 0
201+
fi
202+
203+
BASE_REF="origin/$BASE"
204+
HEAD_REF="origin/$HEAD_BR"
205+
git rev-parse "$BASE_REF" >/dev/null
206+
git rev-parse "$HEAD_REF" >/dev/null || true
207+
208+
# Primary commit ahead count (commits reachable from HEAD_REF not in base)
209+
AHEAD=$(git rev-list --right-only --count "$BASE_REF...$HEAD_REF" 2>/dev/null || echo 0)
198210
echo "ahead_commits=$AHEAD" >> $GITHUB_OUTPUT
199211
200-
# Secondary: file diff check (handles rewritten history / same commit count but content changes)
201-
if git diff --quiet "origin/$BASE...$HEAD_BR"; then
212+
# Secondary: file diff check
213+
if git diff --quiet "$BASE_REF...$HEAD_REF"; then
202214
FILE_DIFF=0
203215
else
204216
FILE_DIFF=1
205217
fi
206218
echo "file_diff=$FILE_DIFF" >> $GITHUB_OUTPUT
207219
208-
# Tertiary: changed pubspec / changelog specifically (release related)
209-
if git diff --name-only "origin/$BASE...$HEAD_BR" | grep -E '^(pubspec.yaml|CHANGELOG.md)$' >/dev/null; then
220+
# Tertiary: specific release related files changed
221+
if git diff --name-only "$BASE_REF...$HEAD_REF" | grep -E '^(pubspec.yaml|CHANGELOG.md)$' >/dev/null; then
210222
REL_FILES_CHANGED=1
211223
else
212224
REL_FILES_CHANGED=0
@@ -218,8 +230,7 @@ jobs:
218230
echo "Diff detected (ahead=$AHEAD file_diff=$FILE_DIFF release_files=$REL_FILES_CHANGED)"
219231
else
220232
echo "different=false" >> $GITHUB_OUTPUT
221-
echo "No diff between $HEAD_BR and $BASE. PR will be skipped."
222-
echo "(ahead=$AHEAD file_diff=$FILE_DIFF release_files=$REL_FILES_CHANGED)"
233+
echo "No diff between $HEAD_BR and $BASE (ahead=$AHEAD file_diff=$FILE_DIFF release_files=$REL_FILES_CHANGED). PR will be skipped."
223234
fi
224235
225236
- name: Create / Reuse PR (github-script)

0 commit comments

Comments
 (0)