Wohin gehen Bugfixes im Git-Flow-Modell?

14

In den allgemein als Git-Flow- Modell bezeichneten Hotfixes werden hotfix-*kleine Integrationskorrekturen in den jeweiligen Zweig gestellt, bevor die Veröffentlichung in den release-*Zweig gestellt wird. Allgemeine Bugfixes aus der Vorgängerversion scheinen keinen Platz zu haben.

Wo sollen sie erscheinen? Sollen sie sich in einer eigenen bug-*Filiale befinden, von der sie sich abzweigen develop(genau wie featureFilialen)?

Schuh
quelle
3
Warum unterscheidet sich ein unkritischer Fehler im freigegebenen Code von einer kleinen Funktion, um ein anderes Verhalten zu erzeugen als das, was die Anwendung derzeit tut?
Bart van Ingen Schenau
@BartvanIngenSchenau Empfiehlst du ihnen feature-*Filialen zu sein? Kann eine Behebung eines fehlerhaften Verhaltens als Merkmal angesehen werden?
Schuh
1
@Shoe Ich denke, was Bart bedeutet, ist, dass Sie sie als Features behandeln sollten, nicht unbedingt mit dem gleichen Zweigpräfix .
Darkhogg
3
@Shoe: in git-flow, jede Filiale außer master, develop, release-*oder hotfix-*ist ein Feature Zweig, so dass Sie einen anderen Präfix für Fehler eines beliebiges Präfix Sie wie und verwenden kann. Was ist außerdem der Unterschied zwischen einem fehlerhaften Verhalten, das wie angegeben funktioniert, und einem fehlerhaften Verhalten, das von der Spezifikation abweicht? In beiden Fällen handelt es sich um ein fehlerhaftes Verhalten, aber nur das letzte ist ein Fehler.
Bart van Ingen Schenau

Antworten:

8

Die kurze Antwort: Ja, Zweige für Fehlerkorrekturen, die in einer geplanten kommenden Version enthalten sind, sollten sich in Feature-Zweigen befinden. Wie Sie Feature-Zweige oder diese Zweige für Fehlerbehebungen benennen, liegt bei Ihnen und Ihrem Team. Sie sollten jedoch identisch behandelt werden, wenn Sie Gitflow folgen.


Bart van Ingen Schenaus Kommentar bringt einen guten Punkt auf den Punkt.

Gitflow hat fünf Zweigtypen: master, develop, Hotfix Zweige (mit dem Präfix hotfix-), Release - Zweig (mit dem Präfix release-und verfügen über Niederlassungen Des. masterUnd developZweige mit langer Laufzeit Zweigen und Sie verpflichten nicht direkt in ihnen die. release-Zweige sind aus einer Linie zeichnen für ein bestimmtes Release und dann zur Unterstützung von Fehlerkorrekturen zwischen der Identifizierung der nächsten Version und dem Release. Die hotfix-Zweige sind speziell für kritische Releases außerhalb des Zyklus für die Produktion bestimmt. Die feature-Zweige dienen zur Entwicklung individueller Funktionen für einige zukünftige Releases.

Von Umgebungen , in denen PRs verwendet werden , und abgesehen von einem einzelnen Entwickler zu einem Feature - Zweig zu begehen, soll nichts direkt in begangen werden master, developoder einem Release - Zweig. Auf diese Weise wird sichergestellt, dass jede Änderung durch Code überprüft wird, und es wird sichergestellt, dass die Testabdeckung stimmt und die Tests in einer CI-Umgebung bestanden werden, bevor Änderungen vorgenommen werden. Sie haben keine Probleme, Fehlerbehebungen oder Änderungen vor der Veröffentlichung direkt in den Veröffentlichungszweig zu übertragen und diese dann in die Entwicklung und anschließend in die Funktionszweige zu ziehen.

In Ihrem speziellen Fall ist eine release-Niederlassung kein geeigneter Ort. Die Software wurde bereits veröffentlicht und ist in master. Sobald eine Veröffentlichung in master zusammengeführt und dort markiert wurde, hat der Veröffentlichungszweig für diese bestimmte Veröffentlichung seinen Zweck überlebt und muss nicht mehr existieren. Wenn Sie aktiv an der Bereinigung Ihrer Filialen arbeiten (was meiner Meinung nach jeder tun sollte), ist dies nicht einmal eine Option.

Wenn Ihr Fix nicht kritisch ist, scheint auch ein Hotfix-Zweig nicht zu passen. Der Zweck einer Hotfix-Verzweigung besteht darin, kritische Änderungen schnell in die Produktion zu bringen, ohne die laufende Entwicklung zu beeinträchtigen. Diese zu verwenden, sollte eher die Ausnahme als die Norm für ein Entwicklungsteam sein. Im Allgemeinen sollten kritische Hotfixes ein Ausnahmefall sein.

Das einzige, was noch übrig ist, ist ein Feature-Zweig. Beachten Sie, dass der Abschnitt der Seite, auf den in der Frage zu Feature-Zweigen verwiesen wird, sogar besagt, dass Feature-Zweige "manchmal als Topic-Zweige" bezeichnet werden. Wenn Ihre Änderung auf eine bevorstehende Veröffentlichung abzielt und die Kriterien für einen Hotfix nicht erfüllt, sollte sie sich in einem dieser Zweige befinden.

Thomas Owens
quelle
Wir sind uns einig, dass es keine direkten Verpflichtungen geben sollte, Zweige zu erarbeiten, zu entwickeln oder freizugeben. Aber wie sollte der PR-Ablauf aussehen, wenn Sie einen Fehler im Release-Zweig finden und dieser sowohl im Release- als auch im Development-Zweig behoben werden muss? Dies hat seine eigenen Herausforderungen, wenn Ihr gesamter Release-Zweig noch nicht bereit ist, in der Entwicklung zusammengeführt zu werden, aber die Fehlerbehebung sollte an beiden Stellen durchgeführt werden. Wenn Sie möchten, kann ich eine neue Frage dazu stellen.
Sap
@Sap Eine neue Frage wäre gut, aber wenn Sie sie posten, erklären Sie bitte, warum das Update so kritisch ist, dass es in beiden zusammengeführt werden muss - dies scheint zu implizieren, dass ein kritisches Problem nicht gefunden wurde, bevor es eingeführt wurde develop, nicht gefunden zwischen der Einführung und der Erstellung des Release-Zweigs und / oder dass Ihr Release-Zweig schon lange existiert. Ich glaube jedoch, dass die einzige Wahl ein Cherry-Pick ist (ich würde vorschlagen, eine Fix- und Pull-Anfrage in den Release-Zweig zu stellen, in den Release-Zweig zu mischen und Cherry-Pick über eine Pull-Anfrage in die Entwicklung zu bringen).
Thomas Owens
4

Wenn es sich um ein einzelnes Commit handelt, führen Sie einfach ein gut identifiziertes Commit durch und platzieren Sie es auf dem Entwicklungszweig. Andernfalls erstellen Sie einen Feature-Zweig.

Es gibt auch einen Kommentar des Git-Flow-Autors, der genau sagt, was Sie fragen: Fehlende Bugfix-Zweige # 24

Deb
quelle
Danke, dieser Link, den du geteilt hast, hat das für mich geklärt.
Arcseldon