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
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? –
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