Git-Workflow für kleine Teams

11

Ich arbeite an einem Git-Workflow, der in einem kleinen Team implementiert werden soll. Die Kernideen im Workflow:

  • Es gibt einen gemeinsamen Projektmaster, an den alle Teammitglieder schreiben können
  • Die gesamte Entwicklung erfolgt ausschließlich in Feature-Zweigen
  • Feature-Zweige werden von einem anderen Teammitglied als dem Zweigautor überprüft
  • Der Feature-Zweig wird schließlich mit dem gemeinsam genutzten Master zusammengeführt und der Zyklus beginnt erneut

Der Artikel erklärt die Schritte in diesem Zyklus im Detail:

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md

Ist das sinnvoll oder fehlt mir etwas?

Janos
quelle

Antworten:

16

Ich mag das Git-Flow-Verzweigungsmodell . Der Hauptzweig bleibt die meiste Zeit in Ruhe, er enthält nur Releases. Der Entwicklungszweig sollte jederzeit stabil sein, und die Feature-Zweige können unterbrochen werden.

Sie können dies auch mit einer kontinuierlichen Integration kombinieren , indem Sie die Entwicklung in Ihrem Feature-Zweig und Ihren Feature-Zweig in der Entwicklung zusammenführen. Natürlich sollten Sie etwas nur dann in die Entwicklung einbinden, wenn Sie sicher sind, dass die Dinge funktionieren und nicht kaputt gehen.

Arjan
quelle
Nach meinem Verständnis sind Git Flow und kontinuierliche Integration alternative Arbeitsweisen und können nicht wirklich kombiniert werden. Im Git-Flow wird der Code erst dann in die Entwicklung integriert, wenn eine Funktion abgeschlossen ist. Bei der kontinuierlichen Integration wird der gesamte Code mindestens einmal täglich in einem gemeinsam genutzten Zweig zusammengeführt, auch wenn er nicht sofort eine neue Funktion bietet.
BDSL
7

Ich denke, Ihnen fehlt das Thema Kontinuierliche Integration. Es sollte Teil jedes Entwicklungs-Setups sein.

Bei Feature-Zweigen haben Sie das Problem, dass Sie nicht kontinuierlich integrieren, sondern erst, nachdem ein Feature abgeschlossen wurde.

Wenn das verzweigte Feature nur von kurzer Dauer ist, ist dies möglicherweise akzeptabel, aber es ist definitiv etwas, das man berücksichtigen sollte.

Eine andere Alternative besteht darin, CI-Builds für jeden Feature-Zweig einzurichten. Das hilft zwar, ist aber keine Integration. Dies wird offensichtlich, sobald Sie Ihren ersten Fehler finden, der weder in Feature A noch in Feature B auftritt, sondern in dem Moment, in dem Sie Feature A & B integrieren

Eine dritte Alternative besteht darin, das Zusammenführen in einem Integrationszweig zu einem Teil des CI-Builds zu machen. Dies ist eine echte Integration und funktioniert mit Git ziemlich gut, wenn die Arbeit etwas getrennt ist, führt jedoch zu Zusammenführungskonflikten während des Builds, die zu fehlgeschlagenen Builds führen.

Jens Schauder
quelle
Der Hauptzweig kann mit einem CI verbunden werden, um Zusammenführungen von Feature-Zweigen abzulehnen, wenn sie die automatisierten Nicht-Regressionstests nicht bestehen. Vielen Dank für den Tipp, ich werde am Ende einen Abschnitt "Tipps" hinzufügen und dies dort erwähnen.
Janos
1
Sicher, aber wie gesagt, dies ist keine kontinuierliche Integration, sondern am Ende einer Feature-Integration, die zwar gut genug ist, aber nicht dasselbe
Jens Schauder,
1
Ich denke, dass Feature-Zweige sehr nützlich sind, weil sie nicht stabil sein müssen. Das bedeutet, dass Sie häufig ein Commit durchführen können, anstatt ein großes Commit durchzuführen.
Arjan
Ein automatisierter Erstellungsprozess, der nach einem Zeitplan ausgeführt wird (CI-System), ist unverzichtbar. Es muss häufig ausgeführt werden, damit Kompilierungsprobleme schnell gefunden und behoben werden können. Entwicklerteams sollten Buildfehlern die höchste Priorität einräumen. Es ist viel einfacher, diese Art von Problemen zu beheben, wenn sie zum ersten Mal auftauchen.
Nathan Pilling
1
Für unsere Projekte, die CI verwenden (wir haben einige Legacy-Projekte, die es derzeit nicht verwenden können), verpflichten wir uns, ALLES für echtes CI zu beherrschen. Für unsere Legacy-Projekte verwenden wir das Git-Flow-Verzweigungsmodell. Feature-Zweige sind ein CI-Blocker, wenn Sie mich fragen, sie erschweren die KONTINUIERLICHE Integration (nicht nur, wenn sie abgeschlossen ist). Wir arbeiten weiter an Funktionen und die letzte Aufgabe besteht darin, sie grundsätzlich einzuschalten, aber der Code befindet sich immer im Projekt.
Elliot Blackburn
1

Sie können sich zu Gitflow oder Twgit inspirieren lassen .

gitflow fasst seinen Ansatz wie folgt zusammen:

Git-Erweiterungen zur Bereitstellung von Repository-Operationen auf hoher Ebene für das Verzweigungsmodell von Vincent Driessen.

Twgit beschreibt sich wie folgt:

Twgit ist ein kostenloses und Open Source-Tool zur Verwaltung von Funktionen, Hotfixes und Releases in Git-Repositorys. Es bietet einfache Befehle auf hoher Ebene zur Übernahme des in unserer Dokumentation beschriebenen Verzweigungsmodells. Unterstützte Betriebssysteme: Debian / Ubuntu Linux, Mac OS X.

Beide Werkzeuge sind bei github erhältlich .

Duran
quelle