2016-11-20 10 views
1

GitLabバージョン8.5.0を使用しています。私は特定のブランチをロックするカスタムサーバー側の更新フックを書いています。しかし、私はGitLabのマージ要求を処理できるようにしたいと思います。すべてのGitLabマージリクエストは、通常、コミットの説明に「See Merge request」というコメントを持ちます。したがって、私はコミットメッセージ "See Merge request"を含むコミットだけを許可すると考えました。しかし、それは私が思ったように動作しません。ブランチをロックしますが、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

「マージ要求を参照してください」というテキストでコミットを許可すると、悪意のあるユーザーがこのテキストを挿入してスクリプトをスプーフィングするのを防ぐことができますか? –

+0

私はこれが正しい方法ではないことを知っています..私は、gitlabのコミットを追跡するための他の正しいメカニズムがある場合は、提案のために開いています – user6930

答えて

4

私はあなたがGitLab 8.5を使用している理解しますが、可能ならば、これはネイティブ(およびより安全に)なって実施してきた8.11へのアップグレードを検討してください。
を参照してください「Using the Allowed to merge and Allowed to push settings

あなたは保護されたブランチに入る変更のマージ要求を提出するすべての人を必要とするように、「Developers + Masters」にを「No one」に「Allowed to push」を設定し、「Allowed to merge」でした。

enter image description here

次に、あなたが必要とするすべては、いくつかの枝を保護することで、彼らは唯一のマージ要求によって変更されます。

+1

ちなみに、* GitLabを使用していない*同じ種類のもの(許可されたユーザ "メンテナ"と "スーパーマネージャ"を呼び出す)。これは、より多くの調整可能なノブを持っています。このスクリプトはhttp://web.torek.net/torek/git/pre-receive.sh.txtにあります。 – torek

+1

ありがとう、ロックを知ってうれしいのは、それ以降のバージョンで実装されています。残念ながら、アップグレードは現在オプションではありません。 – user6930

関連する問題