已关闭
bug(repo): current-repo inference is only partially adopted across command families #112
aflyingto创建于 4月3日关闭于 4月3日
aflyingto
4月3日 评论:
4月3日 评论:
该 issue 在 PR #91 合并时被错误自动关闭。PR #91 仅新增 Team agent 审视任务书,并未实现本 issue 对应问题;现重新打开,后续应由真正修复该问题的 PR 关闭。


aflyingto
4月3日 评论:
4月3日 评论:
aflyingto
4月3日 评论:
4月3日 评论:
验证记录
- 当前版本或分支:
bugfix/issue-110/ PR #92 - 验证时间: 2026-04-03
- 复现命令:
./gc pr view 85 --json - 实际结果: 问题已复现并已在当前变更中处理
- 预期结果: 行为与 issue 描述一致收口,并具备最小测试/回归证据
- 时间线检查: 当前改动尚未合入
main,以 PR #92 进入评审为准 - 结论: 继续修复,进入 ready-for-review
开发进度
- 当前状态: ready-for-review
- 根因: 当前仓库自动推断能力只在部分命令族落地,行为不一致
- 主要修改: 共享 repo 解析入口进一步收口,并补 ParseRepo fallback 测试和文档说明
- 影响范围: 命令行为、测试与文档/回归脚本
- 单元测试:
go test ./... - 构建:
go build -o ./gc ./cmd/gc - 实际命令验证:
./gc pr view 85 --json;并执行./scripts/regression-core.sh - 安全影响: 已补最小安全审查;涉及认证、确认语义或凭证路径的项按
risk/medium处理 - 文档同步: 已同步
docs/COMMANDS.md/docs/REGRESSION.md(按影响范围) - 风险或未覆盖项: 本批次归类
risk/medium;高风险项仍需人工最终确认后才能合并 - 关联 PR: #92


aflyingto
4月3日 评论:
4月3日 评论:
开发进度
- 当前状态: ready-for-review
- 根因: 仓库自动推断只在部分命令族落地,空 repo 参数时行为不一致。
- 主要修改: 统一在 ParseRepo 空参数场景下回退当前仓库,补相关测试,减少命令族漂移。
- 影响范围: pr/release/commit/repo/issue 等命令族。
- 单元测试: go test ./...
- 构建: go build -o ./gc ./cmd/gc
- 实际命令验证: ./scripts/regression-core.sh
- 安全影响: 本次改动不涉及凭证、权限或危险写路径。
- 文档同步: 已更新 docs/COMMANDS.md。
- 风险或未覆盖项: 仍需独立评审和人工最终确认整批 high-risk PR。
- 关联 PR: !92


aflyingto
4月3日 评论:
4月3日 评论:
开发进度
- 当前状态: ready-for-review
- 根因: 多数命令族仍只做
ParseRepo(opts.Repository),缺省-R时不统一接入当前仓库推断。 - 主要修改: repo 解析已统一允许在当前 Git 仓库中缺省
-R推断目标仓库,并同步更新命令文档边界说明。 - 影响范围:
pkg/cmdutil/repo.go、docs/COMMANDS.md - 单元测试:
go test ./... - 构建:
go build -o ./gc ./cmd/gc - 实际命令验证:
./gc pr view 85 --json(在当前仓库根目录省略-R) - 安全影响: 无。
- 文档同步: 已更新
docs/COMMANDS.md自动推断边界。 - 风险或未覆盖项: 仍需独立评审确认“显式目标仓库”类命令未被误改语义。
- 关联 PR: #92


aflyingto
4月3日 评论:
4月3日 评论:
补充跟踪:MR #92 只部分缓解了这个问题,没有把它视为完成。
本轮进展:
- 统一梳理了 repo 解析边界
- 一度尝试把空 repo 参数回退到当前仓库
- 但独立评审确认这会把危险写命令也变成隐式仓库推断,存在安全回归
- 因此最终撤回了
ParseRepo("")的全局回退,只保留显式接入cmdutil.ResolveRepo(...)的安全场景
剩余问题:
- PR / release / commit / milestone / label 等命令族仍未完成按语义分层的 repo 推断收口
- 后续如果继续推进,应只在安全、上下文明确的命令里显式接入
BaseRepo + ResolveRepo,而不是恢复全局空值回退
结论:保留 open,继续跟踪“安全前提下的 repo 推断统一”,关联 MR #92。


背景
仓库已经有统一的当前仓库推断能力:
pkg/cmdutil/repo.go提供ResolveRepo()和BaseRepo注入能力。但当前这套能力只在部分命令里落地,例如
issue view。PR、release、commit、milestone、label 等多个资源域中的多数命令仍直接调用ParseRepo(opts.Repository),没有接入BaseRepo。代码证据
pkg/cmdutil/repo.gopkg/cmd/issue/view/view.gopkg/cmd/pr/view/view.gopkg/cmd/release/list/list.gopkg/cmd/repo/view/view.go实际结果
“在当前 git 仓库内可省略
-R” 的上下文行为只在部分资源域可用,用户和 agent 无法预测哪些命令支持当前仓库推断、哪些不支持。预期结果
只要命令语义允许,命令族应统一接入当前仓库推断能力,而不是局部生效。
影响
建议方向
cmdutil或共享工厂层统一接入BaseRepo