# PR #25987 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[CI] Fix bot-cherry-pick: use state == "MERGED" instead of invalid `merged` field
- 合并时间：2026-05-21 20:10
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/25987

---

# 执行摘要

- 一句话：修复 bot-cherry-pick 的合并状态检测
- 推荐动作：该 PR 是紧急修复工作流缺陷的简单变更，值得部署以恢复 bot-cherry-pick 功能。

# 功能与动机

PR #25981 更新了 bot-cherry-pick 工作流，但首次触发时由于 `merged` 字段无效而失败（报错 Unknown JSON field: merged）。需要修复合并状态检测逻辑，确保工作流正常运行。

# 实现拆解

1. 修改 `.github/workflows/bot-cherry-pick.yml` 中的 `gh pr view` 命令，从请求字段中移除无效的 `merged` 字段。
2. 将 PR 是否已合并的判断条件从 `MERGED != "true"` 改为 `STATE != "MERGED"`，使用 `state` 字段的 `MERGED` 值来判断合并状态。

关键文件：
- `.github/workflows/bot-cherry-pick.yml`（模块 CI；类别 infra；类型 infrastructure）: 工作流实际定义文件，本 PR 的所有变更均在此文件内完成。

关键符号：未识别

## 关键源码片段

### `.github/workflows/bot-cherry-pick.yml`

工作流实际定义文件，本 PR 的所有变更均在此文件内完成。

```bash
# 修正后的 PR 信息获取与合并状态检查逻辑
# 之前使用了无效字段 `merged`，导致 gh CLI 报错
if ! PR_JSON=$(gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json state,mergeCommit,title,number,url); then
    echo "::error::Failed to fetch PR #$PR_NUMBER from $GITHUB_REPOSITORY (see gh output above)."
    exit 1
fi

STATE=$(jq -r '.state' <<<"$PR_JSON")  # 从 JSON 中提取 state 字段

# 使用 state == "MERGED" 判断 PR 是否合并（之前误用 '.merged' 布尔字段）
if [[ "$STATE" != "MERGED" ]]; then
    echo "::error::PR #$PR_NUMBER is not merged (state=$STATE). Only merged PRs can be cherry-picked."
    exit 1
fi

```

# 评论区精华

该 PR 无 review 评论，变更直截了当。

- 暂无高价值评论线程

# 风险与影响

- 风险：风险极低：变更仅涉及两个条件表达式的调整，且与 CI 工作流运行结果直接对齐。若 `gh pr view --json state` 返回的 `state` 字段值在极端情况下有大写 / 小写差异，可能导致判断失败，但 GitHub CLI 保证该值为大写 `MERGED`。
- 影响：仅影响 bot-cherry-pick 工作流，确保其能正确判断 PR 是否已合并，从而正常执行 cherry-pick 操作。
- 风险标记：CI 工作流依赖修复

# 关联脉络

- PR #25981 [CI] Improve bot-cherry-pick: accept PR number, require merged, explicit title: 本 PR 是 #25981 的跟进修复，解决了其引入的无效字段问题。