feat(pr): 新增 pr +checkout 本地检出 PR 分支(对标 gh pr checkout) #356

Merged
wbtiger merged 1 commits from Taoyouce/gitlink-cli:feat/pr-checkout into master 2026-07-14 20:43:41 +08:00
Contributor

背景

评审一个 PR 时最常见的动作是把它的分支拉到本地跑起来。目前需要手工查 PR 的 head 分支和 fork 地址再敲 git 命令;gh CLI 的高频命令 gh pr checkout 证明了这一步值得封装。

变更

  • 新增 pr +checkout -i <PR序号> [-b 本地分支名](在 git 克隆目录内执行):
    • 通过 v1 API 读取 PR 的 head 分支与 fork_project 信息
    • 同仓 PR 从 origin 抓取;fork PR 自动改用 fork 的克隆地址抓取(login/identifier 拼接)
    • git fetch <remote> head:local && git checkout local,git 输出走 stderr,结构化结果(pull/branch/remote)走 stdout 管道安全
    • -b 自定义本地分支名(默认与 head 同名)
  • PR 响应缺 head 时报错(i18n 中英)

测试

  • 新增 2 个单测:本地真实 git 仓库端到端检出断言当前分支切换;缺 head 报错
  • 生产实测:克隆主仓后 pr +checkout -i 355(fork PR)自动从 fork 地址抓取并切到 feat/repo-clone
  • go test ./... / go vet / gofmt 全绿;README 中英已补示例;i18n 中英齐备
## 背景 评审一个 PR 时最常见的动作是把它的分支拉到本地跑起来。目前需要手工查 PR 的 head 分支和 fork 地址再敲 git 命令;gh CLI 的高频命令 `gh pr checkout` 证明了这一步值得封装。 ## 变更 - 新增 `pr +checkout -i <PR序号> [-b 本地分支名]`(在 git 克隆目录内执行): - 通过 v1 API 读取 PR 的 head 分支与 fork_project 信息 - 同仓 PR 从 origin 抓取;fork PR 自动改用 fork 的克隆地址抓取(login/identifier 拼接) - `git fetch <remote> head:local && git checkout local`,git 输出走 stderr,结构化结果(pull/branch/remote)走 stdout 管道安全 - `-b` 自定义本地分支名(默认与 head 同名) - PR 响应缺 head 时报错(i18n 中英) ## 测试 - 新增 2 个单测:本地真实 git 仓库端到端检出断言当前分支切换;缺 head 报错 - 生产实测:克隆主仓后 `pr +checkout -i 355`(fork PR)自动从 fork 地址抓取并切到 feat/repo-clone - go test ./... / go vet / gofmt 全绿;README 中英已补示例;i18n 中英齐备
Taoyouce added 4 commits 2026-07-08 00:16:11 +08:00
wbtiger merged commit 40e2c610a5 into master 2026-07-14 20:43:35 +08:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Gitlink/gitlink-cli#356
No description provided.