So beschränken Sie den Zugriff auf den Hauptzweig auf git

73

Ich habe ein einzelnes Repo, in dem ich 2 Benutzergruppen habe:

  • Admins
  • HTML / UI-Entwickler

Ich möchte mastermeinen HTML-Entwicklern keinen Lese- / Schreibzugriff auf meinen Zweig gewähren, da sie nicht daran arbeiten müssen und den Kerncode nicht missbrauchen sollten.

Sie müssen jedoch an ihrer eigenen Niederlassung arbeiten ui-developers. Wie mache ich das auf Git?

PS: Ich benutze BitBucket

AKTUALISIEREN:

Ich hatte diese Frage gestellt, als ich noch sehr neu in Codierung und Git war. Nach 2 Jahren Erfahrung weiß ich jetzt, dass Git es nicht erlaubt, den READ-Zugriff für einen bestimmten Zweig einzuschränken. Mit Diensten wie Bitbucket, Gitlab und Github können Sie jedoch Einschränkungen für das Schreiben und Zusammenführen von Zweigen festlegen.

Außerdem bin ich vor 6 Monaten zu Gitlab gewechselt :)

Harshit Agrawal
quelle
4
Am einfachsten ist es, ihnen zu sagen, was sie tun sollen.
John Zwinck
6
@ JohnZwinck Würde es vorziehen, es einzuschränken, anstatt sich nur darauf zu verlassen, dass jeder die Anweisungen
befolgt
Hast du das jemals geschafft? Ich muss das gleiche tun
Gotts
Hallo nein. Ich war nicht in der Lage, dies zu tun, da es von git
Harshit Agrawal
Sie können den Lesezugriff auf Ihre Projekt- / Gruppenmitglieder (in diesem Fall HTML / UI-Entwickler) nicht steuern, aber Sie können sicher die Schreibsteuerung für den Master haben. Sie können den Master schützen, indem Sie das Festschreiben nicht zulassen und nur Maintainern oder Maintainern / Entwicklern erlauben, die Anforderung zum Master zusammenzuführen. Auf diese Weise muss jeder Entwickler mit einem eigenen Zweig für UI-Entwickler den Code überprüfen, bevor er bei Bedarf zum Master zusammengeführt wird.
user85

Antworten:

124

Git selbst hat keine solche Funktion, aber viele Hosting-Anbieter. Dies wird allgemein als Zweigschutz bezeichnet . Soweit ich weiß, gibt es keine Möglichkeit, den Lesezugriff zu verhindern.

Verwenden von BitBucket

BitBucket ermöglicht eine Vielzahl von Anpassungen für die Aktionen, die durch den Zweigschutz verhindert werden sollen. So schützen Sie einen Zweig:

  1. Wechseln Sie zu einem Repository in einem Projekt.

  2. Wählen Sie "Einstellungen"> "Zweigstellenberechtigungen".

  3. Klicken Sie auf Berechtigung hinzufügen.

  4. Wählen Sie im Feld Verzweigungen entweder den Verzweigungsnamen, das Verzweigungsmuster oder das Verzweigungsmodell aus.

  • Filialname - Wählen Sie eine vorhandene Filiale nach Namen aus.

  • Verzweigungsmuster - Geben Sie eine Verzweigung mithilfe der Verzweigungsmustersyntax für übereinstimmende Verzweigungsnamen an.

  • Verzweigungsmodell - Wählen Sie den Verzweigungstyp aus, auf den der Zugriff beschränkt werden soll.

  1. Wählen Sie die Art der Aktionen aus, die Sie verhindern möchten.
  • Löschen von Zweigen - Verhindert das Löschen von Zweigen und Tags.

  • Umschreiben des Verlaufs - Verhindert das Umschreiben des Verlaufs in den angegebenen Zweigen, z. B. durch Force Push oder Rebase.

  • Änderungen ohne Pull-Anforderung - verhindert, dass Änderungen direkt in die angegebenen Zweige übertragen werden. Änderungen sind nur mit einer Pull-Anfrage zulässig.

  • Alle Änderungen - verhindert Pushs auf die angegebenen Zweige und schränkt das Erstellen neuer Zweige ein, die den angegebenen Zweigen oder Mustern entsprechen.

  1. Optional: Fügen Sie Ausnahmen für eine der ausgewählten Einschränkungen hinzu. Das Hinzufügen eines Benutzers oder einer Gruppe als Ausnahme bedeutet, dass dies nicht für sie gilt. Dies ist nicht erforderlich; Wenn keine Ausnahmen hinzugefügt werden, gilt die Einschränkung für alle.

  2. Klicken Sie zum Erstellen auf Erstellen.

Quelle

Verwenden von GitHub

Ein Repository kann mehrere geschützte Zweigregeln haben, die sich auf dieselben Zweige auswirken.

Geschützte Zweige sind nur in öffentlichen Repositories mit GitHub Free verfügbar.

Der geschützte Zweig in GitHub kann so konfiguriert werden, dass Folgendes erforderlich ist:

  • Pushs, die über Pull-Anfragen ausgeführt und vor dem Zusammenführen überprüft werden sollen,

  • andere Zweige, die die Statusprüfung bestehen, bevor sie zusammengeführt werden,

  • verpflichtet sich zur Unterzeichnung,

  • Geschichte linear zu sein,

  • dass die oben genannten Regeln auch für Administratoren durchgesetzt werden,

  • dass Pushs von bestimmten Personen, Teams oder Apps kommen,

Force Pushs und Deletions können unabhängig voneinander zugelassen werden.

So schützen Sie einen Zweig:

  1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.

  2. Klicken Sie unter Ihrem Repository-Namen auf Einstellungen .

  3. Klicken Sie im linken Menü auf Zweige .

  4. Klicken Sie neben "Zweigschutzregeln" auf Regel hinzufügen .

  5. Geben Sie unter "Filialnamensmuster" den Filialnamen oder das Filialmuster ein, das Sie schützen möchten ( betroffene Filialen werden aufgelistet und gezählt ).

  6. Konfigurieren Sie bei Bedarf bestimmte Zweigregeleinstellungen.

  7. Klicken Sie auf Änderungen erstellen oder speichern .

Quelle

Verwenden von GitLab

In GitLab führt der Schutz eines Zweigs Folgendes aus:

  • Es verhindert, dass alle Benutzer außer Benutzern mit Master-Berechtigung erstellt werden, sofern dies noch nicht geschehen ist
  • Es verhindert Pushs von allen außer Benutzern mit Master-Berechtigung
  • Es verhindert, dass jemand gewaltsam auf den Ast drückt
  • Es verhindert, dass jemand den Zweig löscht

So schützen Sie den Zweig:

  1. Navigieren Sie zur Hauptseite des Projekts.

  2. Klicken Sie in der oberen rechten Ecke auf das Einstellungsrad und wählen Sie Geschützte Zweige.

  3. Wählen Sie im Dropdown-Menü Zweig den Zweig aus, den Sie schützen möchten, und klicken Sie auf Schützen.

  4. Sobald dies erledigt ist, wird der geschützte Zweig in der Liste "Bereits geschützt" angezeigt.

Sie können dann Benutzern mit Entwicklerrechten Zugriff gewähren, indem Sie "Entwickler können zusammenführen" oder "Entwickler können Push" aktivieren.

Quelle

1615903
quelle
Die Schritte für GitHub scheinen aktualisiert worden zu sein, seit Sie geantwortet haben. Können Sie bitte Ihre Antwort gemäß dem neuesten Update aktualisieren?
Somendra Meena
Ich war neugierig auf "Verzweigungsmodell" in Bitbucket - es scheint dem "Verzweigungsmuster" insofern ähnlich zu sein, als Sie damit Einschränkungen für alle Zweige mit den Namen "feature /", "development" usw. vornehmen können. konfluenz.atlassian.com/bitbucketserver/…
Noumenon
2

Zusätzlich zur Antwort von @ 1615903 können Sie einen Zweig in Azure DevOps wie folgt schützen:

Verwenden von Azure DevOps

Schützen Sie in Azure DevOps einen Zweig mit Sicherheitsberechtigungen und Richtlinien, mit denen Sie Folgendes tun können:

  • Hinzufügen oder Entfernen von Benutzern und Gruppen zu einem bestimmten Zweig.
  • Deklarieren Sie eine Mindestanzahl von Überprüfern für Pull-Anforderungen.
  • Codeprüfer automatisch einschließen
  • Die automatische Überprüfung verknüpfter Workitems ist erforderlich oder optional
  • Überprüfen Sie die Auflösung der Kommentare
  • Erzwingen Sie eine Zusammenführungsstrategie (kein schneller Vorlauf oder Squash)
  • Validierung erstellen

und detailliertere Informationen auf der Dokumentenseite.

So schützen Sie den Zweig:

  1. Wählen Sie auf der Hauptseite des Projekts Repos> Zweige , um die Zweige zu öffnen .
  2. Suchen Sie Ihren Zweig auf der Seite, auf der alle Zweige aufgelistet sind.
  3. Klicken Sie auf die Schaltfläche .... Wählen Sie dann im Kontextmenü Zweigrichtlinien oder Zweigstellensicherheit aus.
  4. Wenn Sie fertig sind, wählen Sie Änderungen speichern , um Ihre neue Richtlinienkonfiguration anzuwenden.
Mahmut Acar
quelle
2

In Git selbst können Sie den "Pre-Receive" -Hook auf dem Server verwenden, um das Schreiben in einem Zweig an einen Benutzer zu schützen.

Mit diesem Hook können Sie Ihre Einschränkungsrichtlinien für jede Datei im Push anwenden.

Hier finden Sie ein Beispiel.

Jose F. Velez
quelle