项目总览
项目简介
gitcode-cli(命令名:gc)是一款面向 GitCode 平台的命令行工具,参考 GitHub CLI (gh) 的优秀架构设计,为 GitCode 用户提供便捷的命令行操作体验。
设计目标
- 用户体验优先 - 提供与 GitHub CLI 类似的用户体验和命令结构
- 平台适配 - 完全适配 GitCode 平台的 API 特性
- 跨平台支持 - 支持 Linux、macOS、Windows
- 易于扩展 - 模块化设计,便于添加新功能
- 安全可靠 - 安全的认证存储,完善的错误处理
第一版本功能范围
| 优先级 | 功能模块 | 描述 |
|---|---|---|
| P0 | 认证 (auth) | Token认证、OAuth Device Flow、多账户支持 |
| P0 | 仓库 (repo) | 克隆、创建、查看仓库 |
| P0 | Issue 管理 | 创建、列表、查看、关闭 Issue |
| P0 | Pull Request | 创建、列表、检出、合并 PR |
| P0 | 代码检视 | 审阅 PR,添加评论,批准或请求修改 |
技术栈
| 组件 | 技术选型 | 版本要求 | 选型理由 |
|---|---|---|---|
| 编程语言 | Go | 1.21+ | 跨平台编译、单二进制部署、丰富的标准库 |
| 命令框架 | Cobra | v1.8+ | 成熟的CLI框架,支持子命令、参数解析、自动补全 |
| 配置格式 | YAML | - | 可读性强,支持注释,与 gh 保持一致 |
| HTTP 客户端 | net/http | - | 标准库稳定可靠 |
| 表格输出 | go-gh/tableprinter | v2 | 成熟的表格渲染库 |
| 交互提示 | survey | v2 | 丰富的交互组件 |
| 密钥存储 | go-keyring | v0.2+ | 跨平台安全存储 |
项目结构
gitcode-cli/
├── cmd/gc/ # 主程序入口
│ └── main.go
├── pkg/ # 原 internal/,2026-06 起对外开放
│ ├── config/ # 配置管理
│ ├── gtcmd/ # CLI 主逻辑
│ ├── authflow/ # 认证流程
│ ├── gtrepo/ # 仓库模型
│ ├── gtinstance/ # GitCode 实例管理
│ ├── browser/ # 浏览器操作
│ ├── prompter/ # 交互式提示
│ ├── tableprinter/ # 表格输出
│ ├── text/ # 文本处理
│ ├── keyring/ # 密钥环集成
│ └── update/ # 版本更新检查
├── pkg/
│ ├── cmd/ # 命令实现
│ │ ├── root/ # 根命令
│ │ ├── auth/ # 认证命令
│ │ ├── repo/ # 仓库命令
│ │ ├── issue/ # Issue 命令
│ │ ├── pr/ # PR 命令
│ │ ├── user/ # 用户命令
│ │ ├── config/ # 配置命令
│ │ ├── api/ # API 命令
│ │ ├── extension/ # 扩展管理
│ │ └── factory/ # 工厂模式
│ ├── cmdutil/ # 命令工具函数
│ ├── iostreams/ # IO 流管理
│ └── http/ # HTTP 工具
├── api/ # API 客户端
│ ├── client.go # API 客户端
│ ├── http_client.go # HTTP 客户端
│ ├── queries_repo.go # 仓库查询
│ ├── queries_issue.go # Issue 查询
│ ├── queries_pr.go # PR 查询
│ └── query_builder.go # GraphQL 查询构建
├── git/ # Git 操作封装
├── context/ # 上下文管理
├── docs/ # 文档
├── scripts/ # 构建脚本
├── issues-plan/ # 需求管理
├── go.mod
├── go.sum
├── Makefile
├── README.md
└── CLAUDE.md # AI 辅助开发指南
命令概览
认证命令
gc auth login # 登录 GitCode 账户
gc auth logout # 登出账户
gc auth status # 查看认证状态
gc auth token # 打印认证 Token
gc auth switch # 切换账户
仓库命令
gc repo clone # 克隆仓库
gc repo create # 创建仓库
gc repo fork # Fork 仓库
gc repo view # 查看仓库
gc repo list # 列出仓库
gc repo delete # 删除仓库
Issue 命令
gc issue create # 创建 Issue
gc issue list # 列出 Issues
gc issue view # 查看 Issue
gc issue close # 关闭 Issue
gc issue reopen # 重开 Issue
gc issue comment # 添加评论
PR 命令
gc pr create # 创建 PR
gc pr list # 列出 PRs
gc pr view # 查看 PR
gc pr checkout # 检出 PR 分支
gc pr merge # 合并 PR
gc pr close # 关闭 PR
gc pr review # 代码检视(重点功能)
gc pr diff # 查看 PR 差异
gc pr ready # 标记为就绪/WIP
环境变量
| 环境变量 | 描述 | 示例 |
|---|---|---|
GC_TOKEN |
认证 Token | gc_token_xxxx |
GITCODE_TOKEN |
备选 Token | gc_token_xxxx |
GC_HOST |
默认主机 | gitcode.com |
GC_CONFIG_DIR |
配置目录 | /home/user/.config/gc |
参考项目
本项目基于 GitHub CLI (gh) 的源码分析编写,主要参考:
- cli/cli - GitHub CLI 官方仓库
- 源码位置:
cli/目录
最后更新: 2026-03-22