2016-11-20 1134 views
1

我們正在使用GitLab 8.5.0版。我正在編寫一個自定義的服務器端更新掛鉤來鎖定特定的分支。它工作的很好,但是,我想讓GitLab合併請求得到處理。所有GitLab合併請求通常在提交描述中都有「請參閱合併請求」註釋。因此,我想只允許那些包含提交消息「請參閱合併請求」的提交。但是,它並不按我想的方式工作。鎖定分支但允許gitlab合併請求

任何其他可能的方式只允許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

如果你允許任何提交文本'See Merge request'來通過,那麼會阻止惡意用戶插入這個文本來欺騙你的腳本? –

+0

我知道這不是一個正確的方法..如果有任何其他權利的機制來跟蹤gitlab提交 – user6930

回答

4

我知道你正在使用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

然後,所有你需要的是保護一些分支,他們將只能通過合併請求進行修改。

+1

順便說一句,對於任何人*不*使用GitLab,我有我自己的示例預接收腳本,這樣做(稱爲允許的用戶「維護者」和「超級維護者」)。它有更多可調整的旋鈕。該腳本在http://web.torek.net/torek/git/pre-receive.sh.txt – torek

+1

謝謝,很高興知道鎖定是在更高版本中實現的。不幸的是,升級目前不是一種選擇。 – user6930