Wir sind gerade dabei, in meinem Unternehmen von svn zu git zu wechseln (nach einem Jahr, in dem wir Menschen überzeugt haben, yay!).
Bisher ist dies alles zum Besseren, aber es gibt eine kleine Sache, die wir derzeit in unserem Workflow haben, dass ich auch kein gutes Äquivalent finden kann.
Derzeit arbeiten alle unsere Entwickler im Master. Einmal im Quartal verzweigen wir den Master in den Xx-Zweig, der später unsere neueste Version sein wird. Dies bedeutet, dass unser SVN-Repo so aussieht:
- Kofferraum
- Geäst
- 3.8
- 4.1
- 4.2
- ...
Wir verwenden keine Tags.
Hin und wieder wird eine dringende Fehlerbehebung entdeckt.
Der derzeitige Weg für uns ist:
- Repariere es im Master
- SVN führt den relevanten Bereich von Commits wieder in den relevanten Zweigen zusammen (möglicherweise unsere neueste Version, möglicherweise mehr).
Wir sind in der Raumfahrtindustrie tätig, daher sind unsere Niederlassungen langlebig und der Kunden-Upgrade-Prozess ist ziemlich lang, weshalb wir bisher so gearbeitet haben.
Wie wäre ein gutes Äquivalent in Git?
Bisher habe ich versucht, den Fehler in einem vom Master erzeugten Zweig zu beheben und diesen Zweig dann wieder in Master und in 4.3 (zum Beispiel) zusammenzuführen. Der Hotfix-Zweig enthält den Master-Verlauf, und alle Commits zwischen Master und 4.3 werden ebenfalls zusammengeführt, was wir nicht möchten.
Dinge, an die ich bisher denken konnte:
- Ich habe mir die sehr erfolgreiche Git Workflow-Methode angesehen und ihre Lösung besteht darin, den Fehler im Release-Zweig zu beheben und ihn wieder zusammenzuführen, anstatt umgekehrt. Dies könnte in unserem Fall funktionieren, wäre jedoch ziemlich umständlich, da wir den ältesten Zweig, in dem wir den Fehler beheben möchten, bereits kennen müssen, bevor wir den Fehler tatsächlich beheben können.
- Eine andere Lösung besteht darin, den Master zu reparieren und dann die Commits auszuwählen (wie wir es heute für die SVN-Zusammenführung tun). Das Ärgerliche dabei ist, dass wir in diesem Fall die Geschichte dessen verlieren, was wo zusammengeführt wurde, da Kirschpicks wie neue Commits aussehen und wir die Beziehung verlieren.
Was ist der "gute" Weg, dies zu tun? Sollten wir Commits in der Geschichte korrigieren oder Cherry Pick auswählen und manuell verfolgen, was zusammengeführt wurde, oder sogar etwas anderes?
Wenn ich wenig Produktionserfahrung mit Git habe, bin ich mir sicher, dass ich etwas verpasst habe.