已关闭
refactor: 22 个命令缺少 BaseRepo 自动检测 — 强制要求 -R 标志 #332
aflyingto创建于 6月26日关闭于 7月15日
aflyingto
7月15日 评论:
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)
- 结论: 问题成立,进入修复


发现来源
Agent 6 - 架构审查 (Medium)
位置
22 个命令 Options 结构体未包含 BaseRepo 字段:
repo/list,repo/delete,repo/statspr/merge,pr/test,pr/comments,pr/checkout,pr/replyrelease/create,release/delete,release/uploadlabel/create,label/deletemilestone/create,milestone/deletecommit/子命令证据
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