Sollten Kollaborateure in einem privaten Github-Repository jeweils das Repo teilen?

14

Ich arbeite gerade an einem Projekt und wir haben den Quellcode in einem privaten Repository auf Github, mit jedem von uns als Mitarbeiter.

Worüber wir uns nicht im Klaren sind, ist, wie wir jede unserer Arbeiten trennen sollen.

Ich denke, wir müssen Folgendes tun:

  1. Jeder von uns muss das Repository aufteilen
  2. Wenn wir bereit sind, unseren Code zu pushen, senden wir eine Pull-Anfrage an das Repo des Projektleiters, der dies gleichzeitig als Gelegenheit für eine Codeüberprüfung nutzen kann

Wenn es um private Repositories geht, ist dies das, wofür das Gabeln verwendet werden soll, oder ist die Situation überkompliziert?

JMK
quelle
1
Ja. Tun Sie es so, wie Sie es hier vorgeschlagen haben, erstellen Sie nur ein Team und machen Sie das Repo des Teams zum "Master" -Repo. Jeder macht PRs, auch der Projektleiter.
RubberDuck

Antworten:

7

Das Klonen des Repos auf den lokalen Computer des Entwicklers ist bereits eine Art Forking. Wenn jeder Entwickler das Repo auf GitHub gibt, dient dies nur dazu, seinen aktuellen Arbeitsstand zu veröffentlichen.

Dies kann sinnvoll sein, wenn es ein zentrales Master-Repo gibt und viele Mitwirkende keinen direkten Zugriff auf dieses Repo haben. Dies eignet sich hervorragend für Open-Source-Projekte, bei denen jeder einen Pull-Request einreichen und ausgeben kann, der dann von einer Gruppe von Kernbetreuern überprüft und zusammengeführt wird. Die Verwendung mehrerer Repos erzwingt einen Pull-Request-basierten Workflow.

In einem kleinen, vertrauenswürdigen Team ist dies nicht erforderlich. Um zu verhindern, dass sich verschiedene Personen gegenseitig behindern, kann eine Strategie wie der Git Flow angewendet werden: Jedes kleine Feature wird in einem separaten Feature-Zweig implementiert. Wenn die Funktion abgeschlossen ist, wird sie in der Hauptniederlassung zusammengeführt. Die meisten Teams koppeln dies mit einer Pull-Anfrage oder einer Codeüberprüfung nach Konvention, sind jedoch vertrauenswürdig genug, um dies gegebenenfalls zu überspringen. Während separate Repos dazu führen würden, dass ein Entwickler seinen aktuellen Status auf seinen gespaltenen, aber für das Team sichtbaren Repos veröffentlicht, würden sie ihre Änderungen in einem einzigen gemeinsamen Repo in einen separaten Feature-Zweig verschieben. In den meisten Workflows wird davon abgeraten, die gesamte Entwicklung auf Master / Trunk durchzuführen.

Der Unterschied besteht letztendlich nur in der Zugriffsverwaltung und nicht so sehr im implementierten Workflow. Sie können mit beiden Setups Pull-Request-basierte Workflows ausführen. Aus der Perspektive des Raw Git gibt es keinen großen Unterschied zwischen einer Verzweigung und einer Verzweigung - beide Ansätze teilen im Wesentlichen den Verlauf des Projekts und ermöglichen das Hinzufügen von Commits, ohne andere Verzweigungen / Verzweigungen zu beeinflussen. In Anbetracht dessen wäre es viel besser, ein einzelnes Repo in einer vertrauenswürdigen, geschlossenen Gruppe zu teilen.

amon
quelle
1
Um das, was @amon sagt, schnell wiederzugeben, habe ich in einer Organisation gearbeitet, in der jeder Entwickler von einem Hauptrepo abgehen musste, was wir alle für einen unnötigen und unbeholfenen zusätzlichen Schritt hielten. Ich habe nie verstanden, warum dies erforderlich ist, aber unser Einsatzteam hat es nicht besprochen. Der Prozess war: Festschreiben -> Push -> Pull-Anforderung -> Warten -> Warten Sie etwas länger -> Versuchen Sie, die Aufmerksamkeit des OP-Teams auf IRC zu lenken -> Gehen Sie zu den OP-Mitarbeitern und bitten Sie sie, sich die Pull-Anforderung anzusehen -> warten -> Code integriert -> wiederholen.
DaveyDaveDave
1
Ich entmutige diesen Workflow wirklich. Ich habe wirklich schlimme Zusammenführungskonflikte mit zwei Entwicklern erlebt, die beide direkt auf das Canonical Repo zugegriffen haben. Ganz zu schweigen davon, dass es immer noch am besten ist, wenn jemand Ihren Code überprüft. Es ist viel einfacher, Pull-Anfragen zu senden, wenn Sie jeweils einen Fork haben, und es gibt ein kanonisches Projekt-Repo. Ja Ja. Ich weiß, das ist nicht "verteilt". Was auch immer. Das Fork & PR-Modell funktioniert meiner Erfahrung nach besser.
RubberDuck
@RubberDuck das ist ein guter Punkt, ich vermute, mein Fall war selten, weil die für Pull-Anfragen Verantwortlichen nicht in der Lage waren, den Code zu überprüfen, was ihn sinnlos machte. Ich würde andere spezielle Tools für die Codeüberprüfung vorschlagen, wie gerrit möglicherweise effektiver ist, aber ich gehe davon aus, dass das Gabeln ähnlich gut funktionieren kann (sollte).
DaveyDaveDave
Das Problem ist, wer bestimmt, wann die Funktion bereit ist, in den Master einzusteigen. Ich finde es auch unordentlich, mit Zweigen zu arbeiten. Hunderte von Filialen auf einem Repo und die meisten davon sind nicht zusammengelegt oder zur Hälfte fertig. Warum sollten sie überhaupt existieren, wenn sie noch nicht einmal zur Zusammenlegung bereit sind? Bei der Zugriffsverwaltung geht es zu 100% um den Workflow. Diese Antwort ist nur zur Hälfte gut.
Rudolf Olah
5

Dies würde funktionieren, oder Sie könnten eine Verzweigungsmethode verwenden, bei der jeder Beitrag seine eigenen Zweige hat, die, wenn das Team zustimmt, mit dem Master zusammengeführt werden.

Margeaux Frühling
quelle
Danke, werde mit der anderen Antwort gehen, da hat mehr Details, aber ja, ich stimme zu :)
JMK