Wie kann man git-flow effektiv in einem Projekt einsetzen, in dem mehr als eine Hauptversion gepflegt wird?

18

Ich habe mehrere meiner Projekte auf den Git-Flow- Workflow migriert und bin begeistert. Ich habe jedoch keine bewährte Methode gefunden, die den reibungslosen Ablauf bei der Arbeit mit einem Projekt gewährleistet, bei dem mehr als eine Hauptversion gleichzeitig gepflegt wird.

Insbesondere verwalte ich keine "kostenlose Version" und keine "kostenpflichtige Version" oder ein anderes paralleles Modell. Ich spreche von einem Projekt, in dem Version 1 veröffentlicht wird und das weiterhin mit Nebenversionen (1.1, 1.2 usw.) Unterstützt wird .) bis Version 3 veröffentlicht wurde, an welcher Stelle 2 und 3 beibehalten werden würden, bis 4 veröffentlicht wurde ... Sie haben die Idee.

Wie haben oder würden Sie zwei oder mehr unterstützte Versionen eines Projekts gleichzeitig in einem gitflow-Workflow verwalten?

HedgeMage
quelle
Ich habe keine Beispiele atm, aber Projekte, von denen ich weiß, dass sie separate Repositorys für verschiedene Hauptversionen und Backport-Patches von einem zum anderen verwenden.
ProdigySim
@ProdigySim: Danke für den Datenpunkt, aber bin es nur ich oder würde das eine gewisse Menge an Overhead zum Verfolgen und Verwalten hinzufügen?
HedgeMage
@ProdigySim Ich vermute, dass diese Projekte kein Tool mit den Verzweigungs- und Zusammenführungsfunktionen von Git verwendeten.
Rein Henrichs
@Rein Sie verwenden Mercurial. Ich denke nicht, dass die Verzweigung im Hinblick auf die Verfolgung paralleler Hauptversionen von Software sehr sauber wäre.
ProdigySim
Dann war mein Verdacht richtig. Und ja, es ist ziemlich sauber, wenn Ihr Tool es richtig unterstützt. Git und der Linux-Kernel machen es beide so.
Rein Henrichs

Antworten:

10

man gitworkflows, der Urvater des "Git Flow" -Workflows, beschreibt allgemeine Richtlinien für Git-Workflows. die Verwendung von pu, next, masterund maintZweigen; und wie maintwird das gehandhabt. Wenn Sie mehrere Wartungs Zweige haben, können Sie sie nennen, zum Beispiel maint/1.x, maint/2.xund so weiter.

Der Schlüssel ist nicht so sehr, wie man die git-Befehle verwendet, sondern wie man einen vernünftigen Prozess erstellt. Entscheiden Sie, welche Dinge für Sie wichtig sind (einfache Backportierung?) Und erstellen (und dokumentieren) Sie einen Workflow, der diese Einschränkungen erfüllt.

Rein Henrichs
quelle
Aber ist damit die Frage beantwortet? Unterstützt Git-Flow ein flexibles Release-Modell, wie in der Frage beschrieben, oder greift man auf grundlegende Git-Befehle zurück? ("gitworkflows" beschreibt die grundlegende Verwendung von Git-Workflows, Pre-Git-Flow.) Git-Flow wurde (angeblich) zur Vereinfachung von Git-Merge- / Branch-Prozessen erstellt, damit sich Teams (mit unterschiedlichem Grad an Git-Fu-Können) auf das Codieren und konzentrieren können Vermeiden Sie zeitraubende "Fehlfusionen". Ist es mit git-flow möglich, v1.2. {1,2,3, ..} gleichzeitig mit v2.5. {1,2,3, ...} zu pflegen und zu entwickeln? Vielleicht mit langfristigen Release-Filialen? Oder Master1, Master2, ...?
Michael
0

Grundsätzlich würden Sie duplizieren die master, releaseunddevelop Niederlassungen für jede größere Version , die Sie erhalten. Wie sie miteinander interagieren, bleibt gleich. Für featureFilialen, so stellen Sie sicher zu Ast aus dem ältesten Zweig Sie beabsichtigen zu fusionieren zurück in , was verhindert , dass in unerwünschten Abhängigkeiten ziehen. Wenn Sie dann Ihren featureZweig wieder zusammenführen, führen Sie einfach zusätzliche Zusammenführungen in jedem neueren Zweig der Hauptversion durch.

Karl Bielefeldt
quelle
1
Ist es nicht der springende Punkt des Meisters, jede veröffentlichte Version einzubeziehen?
HedgeMage
@HedgeMage, in einem lineareren Release-Zyklus ist das der Fall, aber das ist für parallele Hauptversionen höchst unpraktisch.
Karl Bielefeldt
Dies scheint die praktischste Lösung zu sein, es sei denn, es gibt einen bewährten Trick mit Hotfixes oder einen solchen, den ich nicht kenne. Ich habe nach einer Möglichkeit gesucht, git-flow einzuführen und trotzdem in der Lage zu sein (als unglückliche Voraussetzung), unser bestehendes Release-Modell beizubehalten, in dem wir ältere Releases warten / entwickeln müssen (nicht nur Hotfixes). Daher wird v5.1.x ein paar Jahre nach der Veröffentlichung von v6.1.x bestehen bleiben (mit neuen Funktionen, behobenen Fehlern usw.). Ca. 2-3 Hauptversionen werden zu einem bestimmten Zeitpunkt unterstützt und entwickelt. Aber Bugfixes müssen auf jede Version angewendet werden, in der der Bug existiert.
Michael