

























@@ -167,6 +167,18 @@ jobs:
167167 repo,
168168 pull_number: issue.number,
169169 });
170+ let mergedBaseline = "";
171+ let mergedCandidate = "";
172+ if (pr.merged) {
173+ const { data: commits } = await github.rest.pulls.listCommits({
174+ owner,
175+ repo,
176+ pull_number: issue.number,
177+ per_page: 100,
178+ });
179+ mergedCandidate = pr.merge_commit_sha || commits.at(-1)?.sha || "";
180+ mergedBaseline = mergedCandidate && commits.length > 0 ? `${mergedCandidate}~${commits.length}` : "";
181+ }
170182 const baselineMatch = body.match(/(?:baseline|base)[\s:=]+([^\s`]+)/i);
171183 const candidateMatch = body.match(/(?:candidate|head)[\s:=]+([^\s`]+)/i);
172184 const providerMatch = body.match(/(?:provider|crabbox_provider)[\s:=]+([^\s`]+)/i);
@@ -180,10 +192,10 @@ jobs:
180192 const candidate =
181193 rawCandidate && !["head", "pr", "pr-head"].includes(rawCandidate.toLowerCase())
182194 ? rawCandidate
183- : pr.head.sha;
195+ : mergedCandidate || pr.head.sha;
184196185197 setOutput("should_run", "true");
186- setOutput("baseline_ref", baselineMatch?.[1] || "main");
198+ setOutput("baseline_ref", baselineMatch?.[1] || mergedBaseline || "main");
187199 setOutput("candidate_ref", candidate);
188200 setOutput("pr_number", String(issue.number));
189201 setOutput("instructions", body);
@@ -219,19 +231,26 @@ jobs:
219231BASELINE_REF: ${{ needs.resolve_request.outputs.baseline_ref }}
220232CANDIDATE_REF: ${{ needs.resolve_request.outputs.candidate_ref }}
221233GH_TOKEN: ${{ github.token }}
234+PR_NUMBER: ${{ needs.resolve_request.outputs.pr_number }}
222235shell: bash
223236run: |
224237 set -euo pipefail
225238226239 git fetch --no-tags origin +refs/heads/main:refs/remotes/origin/main
240+ if [[ -n "${PR_NUMBER:-}" ]]; then
241+ git fetch --no-tags origin "+refs/pull/${PR_NUMBER}/head:refs/remotes/origin/pr/${PR_NUMBER}" || true
242+ fi
227243228244 validate_ref() {
229245 local label="$1"
230246 local input_ref="$2"
231247 local revision=""
232248 local reason=""
233249234- revision="$(git rev-parse "${input_ref}^{commit}")"
250+ if ! revision="$(git rev-parse --verify "${input_ref}^{commit}" 2>/dev/null)"; then
251+ echo "${label} ref '${input_ref}' is not available in the workflow checkout." >&2
252+ exit 1
253+ fi
235254 if git merge-base --is-ancestor "$revision" refs/remotes/origin/main; then
236255 reason="main-ancestor"
237256 elif git tag --points-at "$revision" | grep -Eq '^v'; then
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。