Vermeiden Sie das Grid of Doom ™ in Git-Flow

8

Mein Projekt folgt dem Git Flow-Verzweigungsmodell . Die Entwicklung erfolgt am develop, die dort zusammengeführt masterund für Releases markiert wird. Hotfixes treten in Zweigen auf, die vom Strom abgezweigt sind master.

Die aktuelle Entwicklung benötigt jedoch auch die Hotfixes, sodass auch jeder Hotfix-Zweig zusammengeführt wird develop.

Dies führt zu sehr hässlichen Revisionsgraphen, insbesondere werden Entwicklungs- / Hotfixes häufig in kurzer Zeit zusammengeführt:

Hässliches Revisionsdiagramm

Ist dies ein Problem, das normalerweise mit Git-Flow auftritt, und gibt es eine einfache Lösung dafür?

Hannes Struß
quelle
2
Wie oft veröffentlichen Sie eine neue Version und verwenden Hotfix-Zweige nur für Fixes, die nicht bis zur nächsten geplanten Version warten können?
Bart van Ingen Schenau
@BartvanIngenSchenau kann mehrmals am Tag sein, normalerweise jedoch alle paar Tage. Hotfix verzweigt nur für Fixes, die nicht warten können, ja.
Hannes Struß
4
Warum ist die Ästhetik eines Revisionsgraphen ein Problem?
1
Nicht rebase Art dieses Problem zu lösen?
Cuthbert
1
@Cuthbert bis zu einem gewissen Grad, aber Sie können den Master nicht ohne erzwungenes Drücken wieder auf die Entwicklung zurückführen, was keine Option ist.
Hannes Struß

Antworten:

2

Ihr Problem ist also, dass Sie jeden Hotfix zwei- oder dreimal zusammenführen? (Erst meistern, dann entwickeln, zuletzt wieder entwickeln, um zu meistern)?

ja, das ist es! Ich kann das jedoch nicht vermeiden, Hotfixes müssen in Develop zusammengeführt werden

Sicher, aber warum von der Entwicklung zum Master verschmelzen, wenn sich nichts geändert hat?

Schauen Sie sich eine dieser Zusammenführungen an master<-develop<-hotfix: Es sollte dort keine tatsächliche Änderung geben (der Hotfix wurde schließlich bereits direkt mit dem Master zusammengeführt). Wenn sich nichts ändert, tu es einfach nicht.

In jedem Fall sollten laut Ihrem verknüpften Dokument die einzigen Zusammenführungen von der Entwicklung zum Master über einen Release-Zweig erfolgen. Stattdessen halten Sie den Master mit Ihrem (instabilen) Entwicklungszweig synchron - nicht.

Nutzlos
quelle