gitlink-cli/skills/gitlink-issue/references/gitlink-issue-batch-close.md

3.3 KiB
Raw Blame History

issue +batch-close

前置条件: 先阅读 ../gitlink-shared/SKILL.md 了解认证、全局参数和安全规则。

批量关闭 Issue。支持直接传入 Issue 编号列表、从 CSV 读取 Issue 编号,以及用 --dry-run 安全预览。

Issue 编号说明: --numbers 使用的是网页 URL 中可见的 Issue 编号,即 v1 API 的 project_issues_index,不是数据库内部 ID。

命令

# 预览,不修改数据
gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --numbers 42,43 --dry-run

# 按 Issue 编号批量关闭
gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --numbers 42,43

# 从 CSV 文件读取 Issue 编号
gitlink-cli issue +batch-close --owner Gitlink --repo forgeplus --from issues.csv

# 按搜索条件批量关闭
gitlink-cli issue +batch-close --search "已过期" --state open --dry-run

# 确认执行
gitlink-cli issue +batch-close --numbers 42,43 --confirm

CSV 格式

CSV 文件可以包含 numberissue_numberproject_issues_index 列:

number,title
42,stale issue
43,duplicate issue

如果没有表头,则默认第一列是 Issue 编号:

42,stale issue
43,duplicate issue

参数

参数 必填 说明
--numbers, -n 逗号分隔的 Issue 编号,例如 1,2,3
--from 包含 Issue 编号的 CSV 文件
--search 搜索关键词,匹配的 Issue 将被关闭
--state 配合 --search 过滤状态
--label 配合 --search 过滤标签
--dry-run 仅预览计划操作,不关闭 Issue
--confirm 确认执行
--max 最大处理数量(默认 100
--delay 请求间隔毫秒数(默认 0
--owner 仓库所有者(自动从 git remote 解析)
--repo 仓库名称(自动从 git remote 解析)
--format 输出格式: json/table/yaml
--debug 开启调试输出

--numbers--from--search 至少提供一个。多个来源同时提供时,会按顺序合并并去重。

输出

命令会输出批量操作汇总:

{
  "repository": "Gitlink/forgeplus",
  "dry_run": true,
  "total": 2,
  "succeeded": 2,
  "failed": 0,
  "results": [
    {"number": "42", "action": "close", "status": "planned"},
    {"number": "43", "action": "close", "status": "planned"}
  ]
}

API

每个 Issue 复用 issue +close 的安全关闭流程:

  1. 读取当前 Issue保留 subjectdescription
    GET /v1/{owner}/{repo}/issues/{number}
    
  2. 更新Issue 状态为关闭,同时保留原有描述:
    PATCH /v1/{owner}/{repo}/issues/{number}
    Body: { "subject": <current subject>, "description": <current description>, "status_id": 5 }
    

Workflow

  1. 与用户确认目标仓库和要关闭的 Issue 编号。
  2. 先执行 --dry-run 并展示计划结果。
  3. 用户确认后,再执行不带 --dry-run 的命令。
  4. 汇报成功数量、失败数量和失败原因。

[!CAUTION] 不带 --dry-run写操作,执行前必须确认用户意图。

References