无极开物Docs
代码编写与审查

拉取请求

在会话内发布分支,并通过已连接的凭据或本地 gh 创建或复用拉取请求。

开发工作完成后,下一步通常是创建 Pull Request。Kaiwu 无需你切换到浏览器或终端,即可直接发布分支,并创建或复用该请求。

Pull Request 相关操作属于 Git 写操作,因此需要开启 Settings → Features → Source control operations。该功能目前为实验性功能,默认处于关闭状态。

Pull Request 与 Merge Request

当 Kaiwu 能够从仓库的远程地址中识别出代码托管提供商时,Git 标签页便会为当前分支提供 Pull Request / Merge Request 操作界面。

界面支持展示:

  • 当前分支现有的 Pull Request 或 Merge Request
  • 目标仓库及分支合并方向
  • 当前分支是否已满足创建请求的条件
  • 暂未满足条件时的受阻原因,以及下一步的安全操作

提供商支持

提供商当前支持情况
GitHub远程地址识别、对比 URL、已关联账户的 REST 读写、可选的已认证 gh 回退方案、仓库发布、PR 检出以及 PR 工作树准备。
GitLab远程地址识别、对比 URL、可选的已认证 glab 读/写/检出,以及 MR 工作树准备。暂不支持 GitLab 关联账户。
Bitbucket远程地址识别与对比 URL。暂不支持通过身份认证直接创建 Bitbucket PR。
未知远程地址处于安全的不支持状态,不执行任何写操作。

Kaiwu 支持识别 GitHub Enterprise 风格的远程地址。关联账户的 REST 操作专为 GitHub.com 设计;企业版或自托管场景通常依赖 CLI 认证或对比 URL。

GitLab 自建实例(self-managed)远程地址会保留其识别到的基准 URL。在使用 glab 时,Kaiwu 会在条件允许的情况下验证该主机的身份认证状态。

创建或复用请求

当当前分支准备就绪后,你可以直接在 Git 标签页中通过 Kaiwu 创建或复用 Pull Request / Merge Request。

认证优先级:

  • GitHub:优先使用已关联的 GitHub 账户,其次使用已认证的 gh,最后使用免认证的对比 URL。
  • GitLab:优先使用已认证的 glab,其次使用免认证的对比 URL。
  • Bitbucket:使用免认证的对比 URL。

若 Kaiwu 无法直接创建请求,则会打开提供商的对比页面,方便你在浏览器中继续完成。

默认分支防护

如果当前分支是仓库的默认分支,且后端策略要求必须使用特性分支(feature branch),Kaiwu 会阻止直接从该分支创建请求。

此时,界面会提供安全可靠的下一步指引:

  • 先创建一个特性分支;或者
  • 在本地提交与环境权限允许时,通过单次引导操作直接创建特性分支并继续完成 Pull Request 流程

这让用户无需离开 Kaiwu,避免了被直接打断并要求前往终端操作的繁琐体验。

未提交改动与未发布分支

若分支包含未提交的工作,或尚未发布至远端,Kaiwu 不会静默创建 Pull Request。

如果分支存在未提交改动或缺少已发布的上游分支,请先完成提交并发布分支。在仓库状态允许的情况下,快捷操作可将提交、推送以及创建请求等步骤合并执行。

检出 PR 或 MR

通过分支菜单,你可以将 Pull Request 或 Merge Request 检出到当前工作树中。

支持的引用格式包括:

  • 42
  • #42
  • GitHub Pull Request 的 URL
  • GitLab Merge Request 的 URL
  • gh pr checkout 42
  • glab mr checkout 17
  • 分支名称(当输入的文本既非 URL 也非数字请求 ID 时)

本地检出严格遵循 Git 现有的安全机制,妥善处理工作树改动及冲突。Kaiwu 绝不会为了检出成功而丢弃本地修改。

在独立工作树中打开 PR 或 MR

你也可以在基于独立工作树的会话中打开 Pull Request 或 Merge Request。

Kaiwu 会通过代码托管提供商适配器解析该请求,沿用既有的工作树/源码控制路径完成检出准备,并在该工作树路径下开启新会话。

适用于以下场景:

  • 想要评审代码变更,同时不想打乱当前分支的上下文
  • 需要在隔离环境中独立测试其他人的分支
  • 在打开外部 PR/MR 的同时,希望当前工作树保持干净整洁

相关内容

© 乾元执中(南京)科技有限公司 · WUJI-Labs

On this page