我在gitlab中有一个名为devops
的分支,并且我想将我的master
分支与devops
分支合并。但是,我不希望任何其他分支与devops
分支发出合并请求。有可能吗?
基本上,对于devops
作为合并时的目标分支,只有master
是源分支。可以做一些定制来做到这一点吗?还是使用任何脚本?
答案 0 :(得分:0)
据我所知,没有简单的方法告诉GitLab哪些分支可以合并到其他分支中。如果您使用的是GitLab CI,则有一种方法可以实现您想要的。
如果转到GitLab上的项目,则转到“设置”->“常规”->“合并请求”。在那里,您会看到一个复选框,上面写着“如果管道成功,则仅允许合并请求”。
然后,您必须为您的项目建立管道,并且您应该能够找到相应的教程和文档。然后有两个环境变量,分别为“ CI_MERGE_REQUEST_SOURCE_BRANCH_NAME”和“ CI_MERGE_REQUEST_TARGET_BRANCH_NAME”。当管道在合并请求上下文中运行时,它们由GitLab设置。
这是所有预定义变量的列表。 https://docs.gitlab.com/ce/ci/variables/#predefined-environment-variables
然后可以设置一个在所有其他作业之前运行的作业,但前提是存在合并请求。否则,没有必要检查这些变量!一个示例如下所示:
stages:
- merge-check
- build
- test
allowed-merge:
stage: merge-check
script:
- check-branches # This command is different depending on if you run cmd/bash
only:
- merge_requests
根据gitlab运行程序的执行位置,用于检查分支名称的脚本可能看起来有所不同。应该检查这两个环境变量,如果分支正确,则返回0,否则返回1。
以这种方式执行操作不会阻止合并请求的创建,但是无法接受不遵循所需规则的合并请求。