锁分支但允许gitlab合并请求

时间:2016-11-20 08:31:05

标签: git gitlab githooks

我们正在使用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

1 个答案:

答案 0 :(得分:5)

我知道您正在使用GitLab 8.5,但如果可能,请考虑升级到8.11,这是本机(并且更安全)实现的。 请参阅“Using the Allowed to merge and Allowed to push settings

  

您可以将“Allowed to push”设置为“No one”,将“Allowed to merge”设置为“Developers + Masters”,将设置为要求所有人提交合并请求进入受保护分支的变更

enter image description here

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