锁分支但允许gitlab合并请求

thu*_*ird 2 git githooks gitlab

我们使用的是GitLab 8.5.0版.我正在编写一个自定义服务器端更新挂钩来锁定特定的分支.它工作得很好,但是,我想允许处理GitLab合并请求.所有GitLab合并请求通常在提交描述中都有"查看合并请求"注释.因此,我想只允许那些包含提交消息"See Merge request"的提交.但是,它不像我想的那样工作.

任何其他可能的方式只允许gitlab合并请求?

#!/usr/bin/env bash

GIT_COMMIT_MSG=`git log -1 HEAD --pretty=format:%s`

if [[ "$1" == refs/heads/master ]]; then
if [[ "$GIT_COMMIT_MSG" =~ *"See Merge request"* ]]; then
    echo "This is GitLab Merge Request"
else
    echo $GIT_COMMIT_MSG
    echo "ERROR:  you are not allowed to update master" >&2
    exit 1
fi

fi
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 6

我知道您正在使用GitLab 8.5,但如果可能的话,请考虑升级到8.11,这是本地(并且更安全)实现的.
请参阅" 使用允许合并和允许推送设置 "

您可以将" Allowed to push" 设置为" No one",将" Allowed to merge"设置为" Developers + Masters",以要求每个人都为进入受保护分支的更改提交合并请求.

在此输入图像描述

然后你需要的只是保护一些分支,它们只能通过合并请求进行修改.