@@ -186,27 +186,39 @@ jobs:
186
186
BASE='${{ steps.target.outputs.base }}'
187
187
HEAD_BR='${{ steps.push.outputs.branch }}'
188
188
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
195
192
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)
198
210
echo "ahead_commits=$AHEAD" >> $GITHUB_OUTPUT
199
211
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
202
214
FILE_DIFF=0
203
215
else
204
216
FILE_DIFF=1
205
217
fi
206
218
echo "file_diff=$FILE_DIFF" >> $GITHUB_OUTPUT
207
219
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
210
222
REL_FILES_CHANGED=1
211
223
else
212
224
REL_FILES_CHANGED=0
@@ -218,8 +230,7 @@ jobs:
218
230
echo "Diff detected (ahead=$AHEAD file_diff=$FILE_DIFF release_files=$REL_FILES_CHANGED)"
219
231
else
220
232
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."
223
234
fi
224
235
225
236
- name : Create / Reuse PR (github-script)
0 commit comments