branch vs. tags

Generic1

Top Contributor
Hallo,

ich les gerade ein Buch über Maven und da hab ich eine Sache nicht verstanden.
Wenn wir in der Firma einen Build machen dann wird der trunk genommen, daraus das .ear gemacht, dann dieser SourceCode in einen tag commited, dann noch die Version hochgezählt auf "eineVersionHöher-Snapshot.ear" und fertig.

Ich frag mich jetzt, wie ihr das macht, wenn in einem tag ein fehler drinnen ist. Den Tag rührt man ja nicht mehr an. Macht ihr dann aus dem "Tag" einen "Branch" und fixt in dem branch den Fehler oder wie ist da eure vorgehensweise?

lg
Generic1
 
Sollte in einem Tag ein Fehler sein, dann gibt es auch eine entsprechende Revision des Trunks, auf welche man zurückgehen könnte um diese als Base für einen Branch zu nutzen. Tags an sich werden nich angerührt, nur archiviert. Base für jegliche Branches sind der Trunk und andere Branches.
 
Tags nutzen wir eigentlich nur um Lieferstände zu dokumentieren. So nach dem Motto #Tag 1 war Version 1.0 Tag 2. 1.1 usw.
Branches nutzen wir um unterschiedliche Versionen einer Software zu verwalten. Also einmal angepasst für Kunde A und einmal für Kunde B.

Bugs, Änderungen und Erweiterungen pflegst du nicht in einen Tag sondern im Trunk. Und zusätzlich nach Bedarf in den Branches (je nachdem wie ihr Branches verwendet).
 
Zuletzt bearbeitet:
Ganz versteh ichs immer noch nicht.

Man hat einen tag mit der Version 5.6. Die Software ist beim Kunden x und beim Kunden y.
Jetzt kommt der Kunde drauf (solls ja auch geben), dass ein Fehler in der Software ist.
Wie ist dann eure vorgehensweise? Sucht ihr euch den Head im trunk raus oder macht ihr aus dem tag einen branch oder wie macht ihr das?
PS. wir haben nicht mehrere branches für mehrere kunden sondern immer nur eine Auslieferungssoftware, in der alle Features drinnen sind.
 
- trunk stellt den Entwicklungszweig dar (quasi die neuste Version)
- tag ist eine unveränderbare Version des Trunks oder eines Branches zu einem gewissen Zeitpunkt
- branches sind Entwicklungszweige, z.B. verschiedene Kunden oder Fixes für eine Version

Beispiel "Neue Version":

- Version 0.8
- aus dem trunk wird ein tag erstellt mit Version 0.8 und released

Kunde A wünsche Änderung

- Version 0.8 wird gebranched - branche_08_Kunde1
- Änderungen auf branch werden durchgeführt
- branch wird als 0.8_Kunde1 getagt und released

Ganz grob:

Auf dem trunk befindet sich normal die aktuellste Entwicklungsversion. Diese ist nicht unbedingt stabil und nicht unbedingt immer korrekt lauffähig.

Branches werden verwendet um z.B: für verschiedene Kunden verschiedene Versionen mit unterschiedlichen Funktionen zu bauen. Anderes Einsatzgebiet für branches sind z.B: Bugfixes für Produktivversionen.

Nachdem eine Version freigegeben und installiert wurde findet auf dem trunk Weiterentwicklung statt. Tritt nun ein Fehler in der Version auf muss die auf dem trunk zwar gefixed werden - dieser kann aber nicht released werden da es dort noch andere Änderungen gibt. Daher wird auf Basis des tags ein Branch angelegt, dieser wird wiederum getagged und released.
 

Neue Themen


Zurück
Oben