允许跨派生项目的合并请求协作

当用户从派生项目打开合并请求时,他们可以选择允许上游成员在源分支上与他们协作。这允许上游项目的成员在合并之前进行小的修复或变基分支,减少接受外部贡献的来回次数。

此功能可用于跨可公开访问的派生项目的合并请求。

为合并请求启用后,对项目目标分支具有合并访问权限的成员将被授予对合并请求源分支的写入权限。

启用来自上游成员的提交编辑

在 13.7 和之后的版本,此设置默认启用。它可以由具有开发人员角色的用户更改源项目。启用后,上游成员可以重试合并请求的流水线和作业:

  1. 在创建或编辑合并请求时,滚动到 贡献,然后选中 允许具有合并到目标分支权限的成员提交 复选框。
  2. 完成创建合并请求。

创建合并请求后,合并请求部件会显示一条消息:允许可以合并的成员添加提交。

作为上游成员推送到派生

如果合并请求的创建者启用了上游成员的贡献,您可以直接推送到派生仓库的分支。

假如:

  • 派生的项目 URL 是 git@gitlab.cn:thedude/awesome-project.git
  • 合并请求的分支是 update-docs

要查找和处理来自派生项目的更改:

  1. 打开合并请求页面,选择概览标签。
  2. 滚动到合并请求部件,然后选择 检出分支Check out branch button
  3. 在模态窗口中,为步骤 1 选择 (Copy) ,将 git fetchgit checkout 指令复制到剪贴板。将命令(举例如下)粘贴到您的终端中:

    git fetch git@gitlab.cn:thedude/awesome-project.git update-docs
    git checkout -b thedude-awesome-project-update-docs FETCH_HEAD
    

    这些命令从派生的项目中获取分支,并基于获取的分支创建本地分支。

  4. 对分支的本地副本进行更改,然后提交它们。
  5. 在您的终端中,将您的本地更改推送回派生项目。此命令将本地分支 thedude-awesome-project-update-docs 推送到 git@gitlab.cn:thedude/awesome-project.git 仓库的 update-docs 分支:

    git push git@gitlab.cn:thedude/awesome-project.git thedude-awesome-project-update-docs:update-docs
    

    注意两个分支之间的冒号 (:)。

故障排查

派生项目的 MR 页面无法获取流水线状态

当用户派生项目时,派生副本的权限不会从原始项目复制。在上游项目中的成员可以查看或合并合并请求中的更改之前,派生项目的创建者必须授予对派生副本的权限。

要在返回原始项目的派生项目的合并请求页面,查看流水线状态:

  1. 创建一个包含所有上游成员的群组。
  2. 进入派生项目中的项目信息 > 成员页面,邀请新创建的群组加入派生项目。