Ich versuche, einen Git-Workflow auszuwählen, der für unser Produkt am besten geeignet ist. Hier sind die Parameter:
- Wir machen ein paar Hauptversionen pro Jahr, sagen wir höchstens 10
- Es sind mehrere Versionen unseres Produkts gleichzeitig aktiv (einige Benutzer sind mit Version 10.1, andere mit Version 11.2 usw.).
- Wir müssen in der Lage sein, an mehreren Releases gleichzeitig zu arbeiten (also könnten wir an Version 12.1 arbeiten, aber wenn wir am Ende des Releases angelangt sind, beginnen wir gleichzeitig mit der Arbeit an Version 12.2).
- Wir müssen in der Lage sein, Releases zu hotfixen, wenn kritische Fehler gefunden werden
Bisher denke ich, dass es so funktionieren könnte:
- Single Remote Repo wird verwendet
- Erstellen Sie den Zweig 12.1 aus dem Master
- Erstellen Sie Feature-Zweige auf der Basis von 12.1, schreiben Sie sie fest und fügen Sie sie wieder in 12.1 ein
- Wenn wir an einer zukünftigen Version arbeiten müssen, erstellen Sie einen neuen Zweig 12.2, der auf 12.1 basiert
- Wenn Sie von nun an an einem Feature für 12.1 arbeiten, erstellen Sie einen Zweig aus 12.1, schreiben Sie die Änderungen fest und führen Sie die Änderungen in 12.1 und 12.2 zusammen, und drücken Sie
- Wenn Sie an einem Feature für 12.2 arbeiten, erstellen Sie einen Zweig aus 12.2, schreiben Sie die Änderungen fest und führen Sie nur in 12.2 zusammen, und drücken Sie
- Wenn Release 12.1 abgeschlossen ist, führen Sie es in Master und Tag Master Branch mit 12.1 zusammen
- Wenn ein Hotfix benötigt wird, erstellen Sie einen Hotfix-Zweig aus dem ältesten Release-Zweig, der diesen benötigt, schreiben Sie die Änderungen fest und führen Sie ihn in allen Release-Zweigen für dieses Release und zukünftige Releases zusammen, die davon betroffen sein könnten. Wenn der letzte Zweig der stabilen Version betroffen war, führen Sie ihn in master zusammen.
Ich habe ein paar Bedenken:
- Ich bin mir nicht sicher, ob das Zusammenführen von Hotfixes aus alten Zweigen in neue Zweige ein reibungsloser Prozess sein wird, insbesondere wenn sich viele Änderungen überschneiden. Wäre es sinnvoller, in jedem Zweig nur einen manuellen Hotfix durchzuführen, wenn Konflikte auftreten?
- Die Arbeitsablaufmodelle, die ich gesehen habe, scheinen Release-Zweige nicht viel am Leben zu erhalten, sobald die Release fertig ist, wird sie in master zusammengeführt, markiert und entfernt. Mein Problem dabei ist, dass ich keine gute Idee habe, wie ich den Status der Veröffentlichung verwalten soll, wenn alles, was ich habe, Tags in master sind, in einem Zweig einfacher zu reparieren scheint und dann eine Veröffentlichung habe, auf die ich immer zurückgreifen kann Das hat den neuesten Hotfix (ich kann sogar die Hotfixes in der Version markieren). Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, in Master zurückzukehren und irgendwie eine Kopie der Version mit angewendeten Hotfixes zu haben und dieses Tag zu aktualisieren.
Kommentare zu Dingen, die ich möglicherweise übersehen habe, oder zu besseren Methoden, um die von mir festgelegten Anforderungen zu erfüllen, sind willkommen.