Gitlab从特定的源分支合并

时间:2019-02-11 07:33:00

标签: git merge gitlab git-branch

我在gitlab中有一个名为devops的分支,并且我想将我的master分支与devops分支合并。但是,我不希望任何其他分支与devops分支发出合并请求。有可能吗?

基本上,对于devops作为合并时的目标分支,只有master是源分支。可以做一些定制来做到这一点吗?还是使用任何脚本?

1 个答案:

答案 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。

以这种方式执行操作不会阻止合并请求的创建,但是无法接受不遵循所需规则的合并请求。