GitLab CI/CD 如何判断两个分支是否可以合并?

How does GitLab CI/CD determine if two branches can be merged?

例如,如果两个分支合并时dev分支在build分支后面,则可以创建合并请求。但是很明显,它不能合并,因为不可能将一个向后的分支合并到当前分支中。在这种情况下,我想使用the.gitlab-ci.yml配置,判断dev分支是否在build分支后面,请问这样可以吗?如果可能,如何配置 the.gitlab-ci.yml 文件?

基本上,gitlab 使用 git 尝试合并以确定是否存在冲突。它实际上调用 gitaly 来执行此操作。

基本上流程是这样的:

  1. repository.rb 中的 rails 应用程序将调用 gitaly 冲突服务来检查冲突
  2. 冲突服务list_conflict_file在git最近will call to git2go
  3. git2go conflicts subcommand will basically perform the git merge operation 和 return 遇到的任何冲突。这最终作为对步骤 (1)
  4. 中 rails 调用的响应返回

因此,如果您想在 CI/CD 管道中做类似的事情,您可以使用 git(或使用您喜欢的语言编写的 API 到 git ) 尝试对两个分支进行本地合并以检测冲突。