forked from Gitlink/gitlink-cli
1. shortcuts/pr/pr.go — 核心逻辑
+diff 命令替换:
旧实现:与 +files 完全相同,调用 /pulls/{id}/files(只返回文件列表)
新实现:两步调用
GET /v1/{owner}/{repo}/pulls/{id}/versions → 取最新版本 ID
GET /v1/{owner}/{repo}/pulls/{id}/versions/{version_id}/diff → 获取逐行 diff
新增参数:
--file / -f — 过滤特定文件的 diff
--stat — 仅显示统计摘要
新增函数:
getLatestVersionID() — 获取 PR 最新版本 ID
formatDiffStat() — 提取增删统计摘要
2. internal/output/formatter.go — Diff 渲染
isDiffData() — 通过检测 files[].sections 区分 diff 数据和普通文件列表
printDiffTable() — 以 git diff 风格渲染:diff --git 头、hunk header、增删行
修改 printTable() 路由,自动检测并走 diff 渲染分支
3. shortcuts/pr/pr_test.go — 新增 5 个测试
测试用例 验证内容
TestPRDiffFetchesVersionThenDiff 两步调用完整流程
TestPRDiffWithFileFilter --file 参数传递 filepath 查询参数
TestPRDiffStatMode --stat 模式只输出统计
TestPRDiffFailsWhenNoVersions 无版本时返回友好错误
TestPRDiffFailsWhenPRNotFound PR 不存在时正确处理 404
4. Skill 文档更新
SKILL.md — 更新 +diff 描述、新增使用示例、更新注意事项
gitlink-pr-files.md — 完整重写,明确 +files 和 +diff 的区别
|
||
|---|---|---|
| .. | ||
| auth | ||
| client | ||
| config | ||
| context | ||
| output | ||