已关闭
feat(pr,repo): add pr issues and repo branch view commands #264
caolongheng创建于  6月5日关闭于  6月14日
caolongheng
caolongheng
6月5日 创建

需求背景

OpenLibing 工作区的 gitcode-pr-report skill 需要生成 release 分支「已合并 PR → 关联 Issue」门禁报告。根据 AGENTS.md 约束,所有 GitCode 远端交互应统一走 gitcode CLI(认证、分页、JSON 输出),避免脚本自封装 HTTP 与 token 管理。

当前 skill 脚本 gitcode-api.mjs 仍通过自封装 fetch 调用部分 API。经调研(gitcode v0.6.0,Windows,GC_TOKEN 认证),以下能力缺口导致无法完全迁移到 CLI。

功能描述

缺口 1:pr issues 子命令(优先级最高)

现状:gitcode pr 无 issues 子命令;gitcode pr view --json 不含 linked issues 字段。

当前 workaround:

gitcode api repos/{owner}/{repo}/pulls/{number}/issues

期望:

gitcode pr issues <number> -R owner/repo --json

对应 API:GET /api/v5/repos/{owner}/{repo}/pulls/{number}/issues

用例:release 报告需对每个 merged PR 查询关联 Issue(N+1 调用)。有一等命令后可删除脚本内自封装 fetch。


缺口 2:repo branch view 子命令

现状:gitcode repo 无 branch 相关子命令。

当前 workaround:

gitcode api repos/{owner}/{repo}/branches/{branch}

期望(二选一,推荐前者以保持与 repo view 风格一致):

gitcode repo branch view <branch> -R owner/repo --json
# 或
gitcode repo view -R owner/repo --branch <branch> --json

对应 API:GET /api/v5/repos/{owner}/{repo}/branches/{branch}

用例:获取分支最新 commit id(commit.id),用于报告输出目录命名(取前 8 位)。


缺口 3(可选 enhancement):gitcode api --paginate

现状:gitcode api 不支持 --paginate;gitcode pr list --paginate 已支持。

期望:

gitcode api repos/{owner}/{repo}/pulls?state=merged&base=release --paginate --json

用例:通用 API 请求支持自动翻页,减少脚本自写分页逻辑。本需求优先级低于缺口 1/2。

使用场景

  1. Release 门禁报告:列出 base={release_branch} 的 merged PR,逐 PR 查关联 Issue,生成 Markdown 对照表。
  2. 报告目录命名:以目标分支最新 commit 短 hash 作为输出目录标识。
  3. Agent/脚本编排:统一 gitcode 认证与 JSON 输出,符合 OpenLibing AGENTS.md 远端交互规范。

已验证可用的 CLI(无需本 issue 覆盖)

  • gitcode pr list -R owner/repo --state merged --base {branch} --paginate --json
  • gitcode repo view -R owner/repo --json
  • gitcode auth status(GC_TOKEN)

不适用的替代方案

  • gitcode issue relations:从 Issue 侧查 PR,无 base 分支过滤,默认 limit 100,不含 PR 作者信息;语义与 release 报告(从 merged PR 反查 Issue、以 PR 作者为责任人)不符。
  • gitcode issue prs(#22 已实现):方向相反(Issue → PR),不能替代 PR → Issue。

验收标准

gitcode pr issues

gitcode repo branch view

gitcode api --paginate(可选)

环境信息

  • gitcode 版本:0.6.0
  • OS:Windows
  • Shell:bash / PowerShell
  • 认证:GC_TOKEN(gitcode auth status 已验证)

关联 issue/PR

  • #22:已实现 issue prs(Issue → PR),与本需求方向互补
  • #217:label/milestone 列表分页(已关闭),可参考分页实现
  • #242:issue comments 分页语义(已关闭),与 api --paginate 相关但范围不同
  • #246:早期实战缺口汇总(已关闭),未覆盖本 issue 三个具体命令
likedislike
caolonghengcaolongheng
6月5日 修改了issue 的描述
Aaflyingto成员
6月8日 添加了label:enhancementrisk/mediumscope/prscope/repo, status/triage,type/feature
langjitianya008成员
6月9日 评论:

验证记录

  • 当前版本或分支: main (62537e1)
  • 复现命令: gc pr issues 1 -R infra-test/gctest1; gc repo branch view main -R infra-test/gctest1
  • 实际结果: 两个子命令均不存在,pr 无 issues 子命令,repo 无 branch 子命令
  • 结论: 需求确认有效,进入开发
likedislike
Llangjitianya008成员
6月9日 关联了pull request:feat(pr,repo): add pr issues and repo branch view commands
langjitianya008成员
6月9日 评论:

开发进度

  • 根因: CLI 缺少 pr issues 和 repo branch view 子命令,脚本/agent 需通过 gc api 自封装 HTTP 调用
  • 主要修改:
    • api/queries_pr.go: 新增 ListPRIssues 函数(url.PathEscape 编码)
    • api/queries_repo.go: 新增 Branch/BranchCommit 类型,GetBranch 函数(url.PathEscape 编码)
    • pkg/cmd/pr/issues/: 新增 pr issues 子命令及测试(7个测试用例)
    • pkg/cmd/repo/branch/: 新增 repo branch view 子命令及测试(5个测试用例)
    • pkg/cmd/pr/pr.go: 注册 issues 子命令
    • pkg/cmd/repo/repo.go: 注册 branch 命令组
    • docs/COMMANDS.md: 新增两个命令文档、更新 --json 支持列表和自动推断边界
  • 测试: go test ./pkg/cmd/pr/issues/... ./pkg/cmd/repo/branch/... 全部通过
  • 构建: go build 成功
  • 实际命令验证: gc pr issues --help 和 gc repo branch view --help 输出正确
  • 安全影响: 无硬编码 token,API 路径使用 url.PathEscape 防止注入,使用认证客户端
  • 风险或未覆盖项: 未做真实远端命令验证;api --paginate(缺口3)不在本 PR 范围
  • 关联 PR: #237
likedislike
langjitianya008成员
6月14日 评论:

开发进度

  • 根因: CLI 缺少 pr issues 和 repo branch view 子命令,脚本/agent 需通过 gc api 自封装 HTTP 调用
  • 主要修改:
    1. 新增 api.ListPRIssues 和 api.GetBranch 函数
    2. 新增 gc pr issues <number> 子命令及测试(12个测试用例)
    3. 新增 gc repo branch view <branch> 子命令及测试(9个测试用例)
    4. 命令注册和文档更新
  • 测试: go test ./pkg/cmd/pr/issues/... ./pkg/cmd/repo/branch/... — 全部通过
  • 实际命令验证: ./gc pr issues --help / ./gc repo branch view --help — 帮助输出正确
  • 安全影响: API 路径使用 url.PathEscape 防止注入,使用认证客户端,无凭证泄漏
  • 风险或未覆盖项: 未做真实远端命令验证;api --paginate(缺口3)不在本 PR 范围
  • 关联 PR: #237
likedislike
Aaflyingto成员
6月14日 关闭了 issue