新增仓库转移快捷命令 #119

Merged
wbtiger merged 2 commits from Mengz/gitlink-cli:mengz/repo-transfer-shortcuts into master 2026-07-14 22:25:57 +08:00
Contributor

本次 PR 为 repo 命令组补齐仓库所有者侧的项目转移能力,新增 repo +transfer-orgsrepo +transferrepo +transfer-cancel。GitLink OpenAPI 已经提供查询可转入组织、发起项目转移、取消项目转移的接口,但当前 CLI 只能通过 Raw API 调用;维护者在把个人仓库移交给组织、调整项目归属,或让 Agent 编排仓库治理流程时,缺少一个清晰、安全、可测试的 Shortcut 入口。

实现上,这组命令复用现有 RuntimeContext 的 owner/repo 解析、API 调用和统一输出:repo +transfer-orgs 调用 /applied_transfer_projects/organizations 列出可接收目标;repo +transfer --target-owner <login> 会发送 owner_name 发起转移;repo +transfer-cancel 用于取消待处理的转移申请。两个写操作都支持 --dry-run,会输出 method、path 和 payload,不修改线上数据,避免仓库归属这类高风险操作被误触发;--target-owner 也做了空值和空白值校验。

我检查了当前开放 PR,已有 todo 相关 PR 覆盖接收方的接受/拒绝待办申请,但没有覆盖仓库所有者发起和取消转移的入口,因此本 PR 与其互补、不重复。README、中文 README、gitlink-repo Skill 和 doc/changes/repo-transfer-shortcuts.md 已同步补充示例与说明。

已验证:

  • go test ./shortcuts/repo ./internal/i18n
  • go test ./shortcuts/...
  • go test ./cmd ./cmd/api ./cmd/config ./internal/client ./internal/config ./internal/context ./internal/i18n ./internal/output
  • go build ./...
  • git diff --check
  • go run . repo +transfer --help
  • go run . --lang zh-CN repo +transfer-cancel --help
  • go run . repo +transfer --owner Gitlink --repo gitlink-cli --target-owner Mengz --dry-run --format json
  • go run . repo +transfer-cancel --owner Gitlink --repo gitlink-cli --dry-run --format json
  • 本次修改文件中文编码扫描未发现乱码

补充说明:当前 master 在 Windows 下裸跑 go test ./... 仍会命中既有 auth 测试 HOME/USERPROFILE 隔离问题,失败集中在 cmd/authinternal/auth,与本次仓库转移 Shortcut 无关;该问题已有独立 PR 处理,因此本 PR 不重复带入 auth 测试修复。

本次 PR 为 `repo` 命令组补齐仓库所有者侧的项目转移能力,新增 `repo +transfer-orgs`、`repo +transfer` 和 `repo +transfer-cancel`。GitLink OpenAPI 已经提供查询可转入组织、发起项目转移、取消项目转移的接口,但当前 CLI 只能通过 Raw API 调用;维护者在把个人仓库移交给组织、调整项目归属,或让 Agent 编排仓库治理流程时,缺少一个清晰、安全、可测试的 Shortcut 入口。 实现上,这组命令复用现有 `RuntimeContext` 的 owner/repo 解析、API 调用和统一输出:`repo +transfer-orgs` 调用 `/applied_transfer_projects/organizations` 列出可接收目标;`repo +transfer --target-owner <login>` 会发送 `owner_name` 发起转移;`repo +transfer-cancel` 用于取消待处理的转移申请。两个写操作都支持 `--dry-run`,会输出 method、path 和 payload,不修改线上数据,避免仓库归属这类高风险操作被误触发;`--target-owner` 也做了空值和空白值校验。 我检查了当前开放 PR,已有 `todo` 相关 PR 覆盖接收方的接受/拒绝待办申请,但没有覆盖仓库所有者发起和取消转移的入口,因此本 PR 与其互补、不重复。README、中文 README、`gitlink-repo` Skill 和 `doc/changes/repo-transfer-shortcuts.md` 已同步补充示例与说明。 已验证: - `go test ./shortcuts/repo ./internal/i18n` - `go test ./shortcuts/...` - `go test ./cmd ./cmd/api ./cmd/config ./internal/client ./internal/config ./internal/context ./internal/i18n ./internal/output` - `go build ./...` - `git diff --check` - `go run . repo +transfer --help` - `go run . --lang zh-CN repo +transfer-cancel --help` - `go run . repo +transfer --owner Gitlink --repo gitlink-cli --target-owner Mengz --dry-run --format json` - `go run . repo +transfer-cancel --owner Gitlink --repo gitlink-cli --dry-run --format json` - 本次修改文件中文编码扫描未发现乱码 补充说明:当前 master 在 Windows 下裸跑 `go test ./...` 仍会命中既有 auth 测试 HOME/USERPROFILE 隔离问题,失败集中在 `cmd/auth` 和 `internal/auth`,与本次仓库转移 Shortcut 无关;该问题已有独立 PR 处理,因此本 PR 不重复带入 auth 测试修复。
Mengz force-pushed mengz/repo-transfer-shortcuts from e45bc77675 to 10d88360d9 2026-06-09 12:55:05 +08:00 Compare
Mengz added 1 commit 2026-06-12 11:06:59 +08:00
Mengz force-pushed mengz/repo-transfer-shortcuts from bcbcf3fb13 to 9bf0258b43 2026-06-22 12:29:11 +08:00 Compare
wbtiger merged commit d40deaaf23 into master 2026-07-14 22:25:42 +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#119
No description provided.