极狐GitLab 合并请求依赖如何解决?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:

合并请求依赖 (PREMIUM ALL)

  • 在极狐GitLab 16.6 中引入了对复杂合并依赖关系的支持,通过名为 remove_mr_blocking_constraints 的功能标志进行控制。默认禁用。
  • 在极狐GitLab 16.7 中 GA,功能标志 remove_mr_blocking_constraints 被移除。

一个功能可以跨多个合并请求,分布在多个项目中,且工作合并的顺序可能非常重要。当需要按特定顺序合并工作时,可以使用合并请求依赖关系。以下是一些示例:

  • 确保对必需库的更改在更改导入该库的项目之前合并。
  • 防止仅包含文档的合并请求在功能工作合并之前合并。
  • 要求在合并尚未拥有正确权限的人员的工作之前,先合并更新权限矩阵的合并请求。

如果您的项目 me/myexample 导入了 myfriend/library 库,

您应该在 myfriend/library 发布新功能时更新您的项目。

如果您在 myfriend/library 添加新功能之前将更改合并到 me/myexample,

这将破坏您项目的默认分支。合并请求依赖关系可以防止您的工作过早合并:

您可以将 me/myexample 的合并请求标记为 草稿并在评论中解释原因。此方法是手动的,不具备可扩展性,尤其是当您的合并请求依赖于多个不同项目中的其他合并请求时。相反,您应该:

  • 使用 草稿已准备好 状态来跟踪单个合并请求的准备情况。
  • 使用合并请求依赖关系来强制执行合并请求的合并顺序。

合并请求依赖是一个 专业版 功能,但 GitLab 只对 依赖 合并请求强制执行此限制:

  • 专业版 项目的合并请求可以依赖于任何其他合并请求,即使它是在 免费 项目中。

  • 免费 项目的合并请求不能依赖于其他合并请求。

嵌套依赖

GitLab 版本 16.7 及更高版本支持间接的嵌套依赖。一个合并请求可以有最多 10 个阻塞者,而它也可以阻塞最多 10 个其他合并请求。

在此示例中,myfriend/library!10

依赖于 herfriend/another-lib!1,而后者又依赖于 mycorp/example!100:

嵌套依赖关系不会显示在 GitLab 用户界面中,但 UI 支持已在 epic 5308 中提议。

NOTE:一个合并请求不能依赖于它自身(自引用),但可以创建循环依赖关系。

查看合并请求的依赖关系

如果一个合并请求依赖于另一个,合并请求报告区域将显示有关依赖关系的信息:

要查看合并请求的依赖关系信息:

1.在左侧边栏中,选择搜索或跳转 并找到您的项目。

2.选择代码 > 合并请求 并识别您的合并请求。

3.滚动到合并请求报告区域。依赖的合并请求会显示关于设置的依赖关系的总数的信息,例如**(状态警告)** 依赖于 1 个合并请求的合并。

4.选择展开以查看每个依赖项的标题、里程碑、受指派人和管道状态。

在您的合并请求的所有依赖关系都合并之前,您的合并请求无法合并。会显示消息 合并被阻止:只有在上述项被解决后才能合并。

已关闭的合并请求

已关闭的合并请求仍然会阻止其依赖的合并请求进行合并,因为合并请求可以在未合并其计划中的工作之前关闭。如果合并请求关闭后,依赖关系不再相关,您可以将其移除作为依赖,以解除对依赖合并请求的阻塞。

创建新的依赖合并请求

当您创建一个新的合并请求时,您可以防止它在其他特定工作合并之后合并。即使该合并请求位于不同的项目中,这个依赖关系仍然有效。

前提条件:

  • 您必须至少拥有开发者角色,或者有权限在项目中创建合并请求。
  • 依赖的合并请求必须位于 Premium 或 Ultimate 级别的项目中。

创建新的合并请求并将其标记为依赖于其他合并请求的步骤:

1.创建一个新的合并请求。

2.在合并请求依赖关系中 ,粘贴应该在此工作合并之前合并的合并请求的引用或完整 URL。引用的格式为path/to/project!merge_request_id。

3.选择创建合并请求

编辑合并请求以添加依赖关系

您可以编辑现有的合并请求并将其标记为依赖于另一个合并请求。

前提条件:

  • 您必须至少拥有开发者角色,或者有权限编辑项目中的合并请求。

操作步骤:

1.在左侧边栏中,选择搜索或转到 并找到您的项目。

2.选择代码 > 合并请求 并识别您的合并请求。

3.选择编辑

4.在合并请求依赖关系中,粘贴应该在此工作合并之前合并的合并请求的引用或完整 URL。引用的格式为path/to/project!merge_request_id。

从合并请求中移除依赖关系

您可以编辑一个依赖的合并请求并移除依赖关系。

前提条件:

  • 您必须拥有允许您编辑合并请求的项目角色。

操作步骤:

1.在左侧边栏中,选择搜索或转到并找到您的项目。

2.选择代码 > 合并请求并识别您的合并请求。

3.选择编辑

4.滚动到合并请求依赖关系 并选择每个要移除的依赖关系旁边的移除

NOTE:如果您没有查看权限的合并请求依赖关系,会显示为1个无法访问的合并请求。您仍然可以移除这个依赖关系。

5.选择保存更改

故障排除

在项目导入或导出时保留依赖关系

在导入或导出项目时,依赖关系不会被保留。

相关推荐
darkdragonking21 分钟前
由一次构建 OpenEuler 22.03 dnf源所了解到的
linux·运维·服务器
米高梅狮子27 分钟前
Ceph 分布式存储 部署
linux·运维·数据库·分布式·ceph·docker·华为云
WUYOUGYLU29 分钟前
云服务器怎么选、怎么用,才不花冤枉钱
运维·服务器
曹牧34 分钟前
Nginx 504
运维·nginx
我叫张小白。42 分钟前
Git 分支管理与团队协作
git
曦夜日长1 小时前
Linux系统篇,开发工具(五):git的基本使用和浅层认识
linux·运维·服务器
Harm灬小海1 小时前
【云计算学习之路】学习Centos7系统-ROOT密码重置方法
linux·运维·服务器·学习·云计算
IT瑞先生1 小时前
企业云服务器选型分析
运维·服务器
志栋智能1 小时前
超自动化巡检:保障数字化转型的“底座工程”
运维·自动化
Python-AI Xenon1 小时前
Linux逻辑卷(LVM)初始化与文件系统选型全指南
linux·运维·性能测试·存储