gitlink-cli/skills/gitlink-workflow/REFERENCE.md

179 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# gitlink-workflow 参考手册
> 本文档定义跨模块工作流的 API 字段映射、Fork 协作流程和分支命名规范。
---
## 一、跨模块 API 字段关联
### 核心关联关系
```
repo +info
├── project_id ──────────────────→ milestone +list (project_id)
├── forked_from_project_id ──────→ upstream 仓库标识
├── open_devops ─────────────────→ ci +builds 可用性
└── default_branch ──────────────→ branch +protect 的目标
pr +create
├── --head <user>:<branch> ──────→ branch +create 的产物
├── --base <branch> ─────────────→ 目标分支(通常 master
└── pr +view 返回的 id ──────────→ pr +merge / pr +files 的参数
issue +create
└── 返回的 project_issues_index ──→ issue +close / issue +comment 的 --number
```
### PR 状态映射
| pull_request_status | 含义 | 对应 `--state` |
|---------------------|------|---------------|
| 0 | 开放 | open |
| 1 | 已合并 | merged |
| 2 | 已关闭 | closed |
> ⚠️ `pr +list --state` 参数仅影响统计计数,返回列表可能包含所有状态。客户端需按 `pull_request_status` 字段过滤。
### PR 合并方式
| `--do` 参数 | 说明 |
|------------|------|
| `merge` | 标准合并(创建 merge commit |
| `rebase` | Rebase 合并(线性历史) |
| `squash` | Squash 合并(压缩为单个 commit |
---
## 二、Fork 协作流程(详细版)
### 何时必须 Fork
- 向**非自己拥有**的仓库提交 PR
- 没有目标仓库的写权限
- 即使是仓库成员,也推荐 Fork 流程
### 完整 Fork 工作流
```bash
# 1. Fork 目标仓库
gitlink-cli repo +fork --owner <target-org> --repo <target-repo>
# 2. 克隆自己的 Fork
git clone https://gitlink.org.cn/<my-username>/<target-repo>.git
cd <target-repo>
# 3. 添加上游 remote
git remote add upstream https://gitlink.org.cn/<target-org>/<target-repo>.git
# 4. 同步上游最新代码
git fetch upstream
git checkout master
git merge upstream/master
git push origin master
# 5. 创建功能分支
git checkout -b feature/my-change
# 6. 开发和提交
git add -A
git commit -m "feat: 我的改动"
# 7. 推送到自己的 Fork
git push origin feature/my-change
# 8. 从 Fork 向主仓库提 PR
gitlink-cli pr +create \
--owner <target-org> --repo <target-repo> \
--head <my-username>:feature/my-change \
--base master \
--title "feat: 我的改动"
# 9. 上游有更新时同步
git fetch upstream
git merge upstream/master
git push origin master
```
### 禁止操作
- ❌ 直接 clone 主仓库后 push污染主仓库
- ❌ 向主仓库的 master 分支直接推送
- ❌ 使用 `--force` push 到任何共享分支
---
## 三、分支命名规范
### 推荐命名
| 类型 | 模式 | 示例 |
|------|------|------|
| 新功能 | `feature/<描述>` | `feature/wiki-create` |
| Bug 修复 | `fix/<描述>` | `fix/batch-url-encoding` |
| 文档 | `docs/<描述>` | `docs/api-reference` |
| 重构 | `refactor/<描述>` | `refactor/auth-module` |
| 发布准备 | `release/<版本>` | `release/v1.0.0` |
| 紧急修复 | `hotfix/<描述>` | `hotfix/critical-bug` |
### GitLink 分支映射
| 平台 | 默认主分支 |
|------|-----------|
| GitLink | `master` |
| GitHub | `main` |
gitlink-cli 在与 GitLink 交互时自动处理映射:
- push 时:`main` → `master`
- pull 时:`master` → `main`
---
## 四、项目初始化清单
完整的项目初始化应覆盖以下全部:
| 序号 | 项目 | 命令 |
|------|------|------|
| 1 | 创建仓库 | `repo +create` |
| 2 | 克隆到本地 | `repo +clone` |
| 3 | 创建 README | 本地创建后 git push |
| 4 | 创建 .gitignore | 本地创建后 git push |
| 5 | 保护主分支 | `branch +protect --name master` |
| 6 | 创建开发分支 | `branch +create --name develop` |
| 7 | 创建初始 Issue | `issue +create` |
| 8 | 创建里程碑 | `milestone +create` |
| 9 | 开启 DevOps | `api POST /.../activate` |
| 10 | 配置流水线 | 创建 `.devops/` 目录和 YAML 文件 |
| 11 | 邀请团队成员 | `org +batch-invite`(组织仓库)或 `member +add` |
---
## 五、已知限制
| 限制 | 说明 |
|------|------|
| PR 创建需要代码差异 | 分支内容必须与目标分支不同,否则 GitLink 拒绝创建 |
| `api POST` 有 URL bug | 部分 Raw API 写操作不可用,优先使用 shortcuts |
| 不能删除远程分支 | `branch +delete` 的 API 不可用GitLink 平台 bug |
| PR state 过滤不精确 | `pr +list --state` 仅影响计数,需客户端二次过滤 |
---
## 六、常见问题
### Q: 创建 PR 时报错"无变更"
A: 确认你的分支上有不同于 base 分支的新 commit。如果是刚创建的空白分支先提交代码再创建 PR。
### Q: PR 合并后需要手动删分支吗?
A: GitLink 目前不自动删除合并后的分支。可以用 `git push origin --delete <branch>` 或通过 Web 页面手动删除。
### Q: 如何同步 Fork 仓库与上游?
A: `git fetch upstream && git merge upstream/master && git push origin master`
### Q: 项目初始化后 DevOps 还是不可用?
A: `api POST /activate` 可能因 URL bug 失败。最可靠的方式是在 GitLink Web 页面手动开启。