如何在 Gitlab CICD 中添加冲突解决脚本以便不会丢失批准?

问题描述 投票:0回答:1

在Gitlab中,当目标分支更新时,在不冲突的情况下,Gitlab直接提供了rebase按钮。如果我们使用它进行变基,那么 MR 上存在的所有批准都会被保留。

但是相反,如果有冲突,我们必须在本地解决它并再次推送。在这种情况下,MR 上的所有批准都将丢失。

在我们的代码库中,有一个文件在某些情况下会自动更新,大多数时候它会导致冲突。但使用一些脚本,我们可以轻松解决这些冲突。但在本地解决然后推送是没有用的,因为无论如何批准都会被删除。

那么,如何将此脚本集成到 Gitlab CICD 中,以便当该特定文件存在冲突时,我们能够在 Gitlab 本身中解决冲突,而不会失去我们的批准。

git gitlab scripting gitlab-ci cicd
1个回答
0
投票

您可以通过取消选中 将提交添加到源分支时删除所有批准的 MR 批准设置来保留批准。

正如您所指出的:

从 UI 重新调整合并请求的基础时,批准不会被删除。但是,如果目标分支发生更改,批准会被重置。

因此,通过此设置,即使在进行更改后,您也可以选择保留所有批准。然而,除了上述从 UI 进行变基的注释之外,无法区分解决冲突的更改和其他类型的更改,或对特定文件进行例外处理。


一种可能的解决方法可能是完全依赖代码所有者批准规则,可以将其配置为仅在用户的拥有的文件发生更改时删除用户的批准。

这可能看起来像一个

CODEOWNERS
文件,它使所有文件 除了 自动更新的文件由参与评审的项目的(所有)成员“拥有”。这样做的效果是,当自动更新的文件发生更改时,如果配置了“如果文件发生更改,则删除代码所有者的批准”设置,则不会删除任何代码所有者的批准。

© www.soinside.com 2019 - 2024. All rights reserved.