2016-11-20 4 views
1

Wir verwenden GitLab Version 8.5.0. Ich schreibe einen benutzerdefinierten serverseitigen Update-Hook, um bestimmte Zweige zu sperren. Es funktioniert gut, ich möchte jedoch zulassen, dass GitLab-Zusammenführungsaufträge verarbeitet werden. Alle GitLab-Zusammenführungsanforderungen haben normalerweise den Kommentar "Siehe Zusammenführungsanforderung" in der Festschreibungsbeschreibung. Daher dachte ich mir, nur solche Commits zuzulassen, die die Commit-Nachricht "Siehe Merge-Request" enthalten. Es funktioniert jedoch nicht so, wie ich dachte.Sperre Zweig, aber erlauben gitlab Zusammenführung Anfrage

Haben Sie noch andere Möglichkeiten, nur gitlab-Zusammenführungsaufträge zuzulassen?

#!/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

Wenn Sie alle Commits mit dem Text 'Siehe Zusammenführungsanforderung' zulassen, was würde einen böswilligen Benutzer daran hindern, diesen Text einzufügen, um Ihre Skripts zu fälschen? –

+0

Ich weiß, dass dies kein richtiger Weg ist. Ich bin offen für Vorschläge, wenn es irgendeinen anderen richtigen Mechanismus gibt, um gitlab zu committen. – user6930

Antwort

4

Ich verstehe Sie verwenden Gitlab 8.5, aber wenn möglich, sollten bis 8.11 aktualisieren, wenn dies nativ war (und sicherer) umgesetzt.
Siehe „Using the Allowed to merge and Allowed to push settings

You „Allowed to push“ gesetzt könnte „No one“ und „Allowed to merge“ auf „Developers + Masters“, jeden zu verlangen, eine Zusammenführung Antrag auf Änderungen in den geschützten Zweig gehen zu unterbreiten.

enter image description here

alles, was Sie brauchen, dann ist es, einige Zweige zu schützen, und sie werden nur durch merge Anfrage geändert werden.

+1

Übrigens, für jeden, der GitLab nicht benutzt, habe ich ein eigenes Beispiel-Pre-Receive-Skript gleichartige Sache (Aufruf der erlaubten Benutzer "Betreuer" und "Supermaintainer"). Es hat viel mehr zwickelbare Knöpfe. Das Skript ist unter http://web.torek.net/torek/git/pre-receive.sh.txt – torek

+1

Danke, Freut mich zu wissen, dass Sperren in der neueren Version implementiert ist. Leider ist ein Upgrade derzeit nicht möglich. – user6930

Verwandte Themen