Git-Workflow für mehrere Teams

12

Wir werden Git verwenden (noch nicht), und ich möchte den Workflow definieren.

Wir haben 4 Teams an 4 verschiedenen Standorten weltweit, die gemeinsam das gleiche Produkt entwickeln. Jedes Team besitzt einen Teil des Produktcodes, aber manchmal müssen sie auch Änderungen am Code anderer Teams vornehmen.

Gibt es eine Empfehlung für einen Git-Workflow für eine solche Umgebung?

Ich habe diesen Artikel bereits gesehen , aber der Ansatz hier lautet "Wir erstellen so selten wie möglich zusätzliche Zweige", und ich glaube eher an den Ansatz "Zweig für jede User Story".

Auch dieser Artikel präsentiert einen schönen Ansatz.

Ich hatte vor, eine Hauptniederlassung, eine permanente Niederlassung pro Team, die regelmäßig mit dem Master zusammengeführt wird, und eine Zweigstelle pro User-Story, die mit den Niederlassungen der Teams zusammengeführt wird. Macht es Sinn oder würde es nicht funktionieren?

Igor Oks
quelle
2
Wir verwenden dieses Verzweigungsmodell , aber ich denke, wenn Sie "Feature-Zweig" als "Story-Zweig" lesen, passt es sehr gut zu Ihrem zweiten Artikel.
2
Ich bin sicher, 10 Leute könnten darauf mit 10 verschiedenen Antworten antworten. Folgendes funktioniert für mich: Wir haben ein Master-Repo auf Github, das die 'aktuelle' Version kennzeichnet. Ältere Releases sind verzweigt (obwohl das Tagging auch funktioniert). Teammitglieder werden aufgefordert, Zweige für Aufgaben zu erstellen, an denen sie arbeiten. Wenn sie fertig sind, stellen sie eine Pull-Anfrage an den Master (oder wo immer sie zusammengeführt werden muss), und dann überprüft eine andere Person die Pull-Anfrage und ist dafür verantwortlich, sie mit dem Master zusammenzuführen. Sie sind auch dafür verantwortlich, die Filiale nach dem Zusammenschluss zu räumen.
2
Möglicherweise interessieren Sie sich für Submodule , um die Codebasen der verschiedenen Teams voneinander zu trennen. Sie können dann die Codebasen der anderen teilen und Patches senden, wenn sie die Teile des Codes der anderen bearbeiten.
Fred Foo
@larsmans & carbonbasednerd - Ihre Kommentare hätten Antworten sein sollen, sie hätten von mir Stimmen erhalten. * 8 ')
Mark Booth

Antworten:

8

Werfen Sie einen Blick auf das erfolgreiche Git-Verzweigungsmodell , das eine gute Verzweigungsstrategie für die Feature-Entwicklung über Releases hinweg bietet.

Ein erfolgreiches Git-Verzweigungsmodell

Sie könnten etwas Ähnliches mit einer zusätzlichen Ebene für Teamzweige zwischen dem Zweig "Entwickeln" und den Zweigen "Feature" implementieren. Mit Teamzweigen könnten auch zwei Teams effektiver zusammenarbeiten, indem sie zwischen ihren Teamzweigen zusammengeführt werden.

Nick Haddad
quelle
0

Ich würde sagen, dass jedes Team eine eigene Version des Repositorys hat, mit einem globalen Repository, zu dem sich jeder verpflichtet (wie im Linux-Kernel, wo das Linus-Repository der Kernel und das zentrale Repository ist).

Dann könnten Sie zur Pflege des Produktcodes Submodule verwenden, wie @larsmans sagte, dann kann jedes Team nur an dem Teil arbeiten, der für sie am wichtigsten ist, und wenn sie mit einem anderen Teil arbeiten müssen, können sie es tun, aber sie Ich muss daran denken, das Submodul zu aktualisieren, und hier liegt das Problem (da es sehr leicht ist, bei der Verwendung von git etwas falsch zu machen, ist es zum Glück auch einfach, sich von ihnen zu entfernen).

Da Ihre Teams daran gewöhnt sind und wissen, dass sie anderen Teamcode ändern, fällt es ihnen leichter, sich daran zu erinnern, das Submodul-Update durchzuführen, bevor sie ein Fremdmodul ändern.

Coyote21
quelle