2013-04-26 4 views
14

Ich möchte einrichten Konfiguration unten beschrieben erlauben:Gerrit - wie direkte Push-to "Master" verbieten, sondern auf andere Zweige

  • Registrierte Benutzer drücken kann seine Änderungen direkt zu meistern. Er muss diese Änderungen für die Überprüfung drücken:

    "git push origin master" - es sollte von Gerrit abgelehnt (origin = Gerrit)

    "git push origin HEAD: refs/für/Master" - es sollte erlaubt von Gerrit

  • Registrierter Benutzer kann eine neue Niederlassung erstellen. Diese Verzweigung wird als eine Sicherung und eine Art der Zusammenarbeit zwischen zwei oder mehr Entwicklern behandelt, so dass sie nicht überprüft werden sollte.

    "git push origin xyz_abc" - es sollte

von Gerrit erlaubt werden Wie soll ich Gerrit konfigurieren eine solche Funktionalität zu erreichen?

Antwort

0

AFAIK Sie können Berechtigungen für jedes Repo/Projekt in Gerrit einrichten. Zum Beispiel wer kann drücken/wer kann Push/wer kann Ihre Änderungen und all das bestätigen. Unten finden Sie Link, wenn es sinnvoll ist:

https://git.eclipse.org/r/Documentation/access-control.html

+2

nur Verknüpfung zu der Dokumentation ist nicht sehr hilfreich, um solche spezifische Frage zu beantworten – CK1

0

Wenn es viele Zweige sind, können Sie Namespaces verwenden (z dev/*) für Filialen und setzen die Zugriffskontrolle für diesen Namensräumen.

4

Es gibt keine guten Anweisungen irgendwo, also dachte ich würde die Schritte hier dokumentieren.

1. Gehen Sie zu Ihrem Projekt Access-Seite

Projekte> Liste> your_project> Zugang

2. bearbeiten Zugriff

Klicken Sie auf die Schaltfläche Bearbeiten

3. Referenz zu refs/heads/*

hinzufügen

Dies ist die Referenz für alle direkten Pushs. Wir werden konfigurieren, wer was zu diesem Pfad tun kann.

Klicken Sie auf "Add Reference" und geben Sie in 'refs/heads/*' (ohne Anführungszeichen)

4. Verweigern die "Push" Erlaubnis

Die Push Erlaubnis ist derjenige, wer kontrolliert kann direkte Pushs machen. Zusammenführen von Pushs und Pushs zu Gerrit wird weiterhin erlaubt sein (siehe Hinweise unten).

  1. Klicken Sie auf "Berechtigung hinzufügen" und wählen Sie "Push".
  2. die Benutzergruppe Wählen Sie aus Push verweigern möchten (Sie können in „Registrierte Benutzer“ eingeben, wenn Sie alle blockieren möchten)
  3. aus der Dropdown-Wählen „Verweigern“, die, wenn Sie Ihre Benutzergruppe hinzugefügt haben erscheint

5. Änderungen speichern

Und du bist fertig. Die fertige Konfiguration sollte wie folgt aussehen:

Finished config


Hinweis

Wenn dies nicht funktioniert, stellen Sie sicher, dass Sie die Push-Berechtigung setzen auf Refs ermöglichen/für/refs/* - das ist die Erlaubnis, die es erlaubt, zu Gerrit zu gelangen.

+0

Ich frage mich, wie dies die "aber andere Zweige zu ermöglichen" löst. Dadurch werden Push-Vorgänge an ALLE Zweige verhindert. – SureshS

+1

@SureshS Wenn Sie die Erlaubnis für Master anwenden möchten, dann setzen Sie erlauben in Bild oben. Erstellen Sie dann eine neue Berechtigung speziell für refs/heads/master (und setzen Sie den leught anstelle von erlauben unter Push) – Bowen

+1

@Conan "Deny" wird hier nicht funktionieren. Man sollte "Block" für "refs/heads/master" verwenden, statt "refs/heads/*" Einstellungen für diesen bestimmten Zweig zu überschreiben. – VirtualVDX

Verwandte Themen