已关闭
refactor: 22 个命令缺少 BaseRepo 自动检测 — 强制要求 -R 标志 #332
aflyingto创建于  6月26日关闭于  7月15日
aflyingto成员
6月26日 创建

发现来源

Agent 6 - 架构审查 (Medium)

位置

22 个命令 Options 结构体未包含 BaseRepo 字段:

  • repo/list, repo/delete, repo/stats
  • pr/merge, pr/test, pr/comments, pr/checkout, pr/reply
  • release/create, release/delete, release/upload
  • label/create, label/delete
  • milestone/create, milestone/delete
  • 全部 7 个 commit/ 子命令

证据

Factory.BaseRepo() 自动检测当前 Git 仓库,允许命令无需 -R 工作。但 22/74 命令未接入此功能。

影响评估

不一致的用户体验 — 部分命令从仓库内 直接可用,其他命令总是需要 -R。commit/ 命令组(用户在 git 仓库内操作时)最受影响。

建议修复方向

为所有 22 个 Options 结构体添加 BaseRepo func() (string, error) 字段,从 f.BaseRepo 注入,在 run 函数中使用 cmdutil.ResolveRepo(opts.Repository, opts.BaseRepo)。


🤖 Generated by multi-agent code review workflow

likedislike
Aaflyingto成员
6月26日 添加了label:risk/mediumscope/consistency, status/triage,type/refactor
Aaflyingto成员
6月29日 添加了label:status/approvedstatus/ready-for-reviewstatus/self-checked
Aaflyingto成员
7月1日 关联了里程碑:M2: Agent-Friendly Compliance Phase 3
aflyingto成员
7月15日 评论:

验证记录(步2)

  • 当前分支: main (commit f6b8a7b)
  • 类型: refactor (risk/medium, scope/consistency)
  • 核验: origin/main 的 commit/comments/create (create.go:77) 用 parseRepo(opts.Repository) 直接解析,无 BaseRepo/ResolveRepo;pr/merge、release/create 等同样缺失。对比 issue create 用 cmdutil.ResolveRepo(opts.Repository, opts.BaseRepo) 可自动检测
  • 问题确认: 22 命令缺 BaseRepo 字段,Repository 为空时报错强制 -R,无法从 git 仓库内自动检测
  • 修复方案: 22 命令 Options 加 BaseRepo func()(string,error) 字段,从 f.BaseRepo 注入,run 用 cmdutil.ResolveRepo(opts.Repository, opts.BaseRepo)
  • 结论: 问题成立,进入修复
likedislike
Aaflyingto成员
7月15日 添加了label:status/verified;删除了label:status/approvedstatus/ready-for-reviewstatus/self-checked
Aaflyingto成员
7月15日 关联了pull request:refactor(cmd): add BaseRepo auto-detection to 21 commands (Closes #332)
Aaflyingto成员
7月15日 添加了label:status/ready-for-reviewstatus/self-checked
Aaflyingto成员
7月15日 关闭了 issue