我们正在使用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
答案 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
”,将设置为要求所有人提交合并请求进入受保护分支的变更。
然后你需要的只是保护一些分支,它们只能通过合并请求进行修改。