Die ganze Verwirrung rührt von der unterschiedlichen Semantik her , die MS für "Build-Nummer" und insbesondere "Revision" verwendet. Die Begriffe bedeuten nur verschiedene Dinge.
Die meisten Leute (ich selbst eingeschlossen) verwenden ein semantisches Versionsnummerierungsschema, bei dem Sie immer dann eine höhere BUILD-Nummer erhalten, wenn Sie aus irgendeinem Grund einen neuen Build erstellen müssen. Für uns ist ein Hotfix nur eine weitere Codeänderung, und der BUILD-Teil wird bei jedem CI-Lauf automatisch erhöht. Module mit demselben MAJ.MIN.REV gelten als austauschbar, und der BUILD teilt Ihnen mit, welches das jüngste ist.
Inkrementelle REVISION weist jedoch auf einen neuen Zweig für permanente Releases hin. Deshalb stellen wir ihn vor BUILD. Der Nachteil dieses Ansatzes ist, dass wir möglicherweise die folgende Abfolge von Ereignissen erhalten:
- Festschreibungsnummer 4711: Alice hat Feature A hinzugefügt
- CI erstellt Build 1.2.3.100
- Festschreibungsnummer 4712: Bob hat Merkmal B geändert
- Festschreibungsnummer 4713: Alice hat Feature A (den "Hotfix") behoben
- CI erstellt Build 1.2.3.101
Wie Sie sehen können, ist der Hotfix nicht die einzige Änderung, die im nächsten Build enthalten ist, auch Bobs Modifikation wird Teil dieses Builds. Wenn Sie den aktuellen Zweig stabilisieren möchten, können Sie in Schwierigkeiten geraten, da Sie nie sicher sein können, ob Bob gerade eine Reihe von Fehlern hinzugefügt hat oder nicht.
MS verwendet beide Begriffe unterschiedlich. Die BUILD-Nummer wird nicht automatisch erhöht, sondern kann als Freigabezweig betrachtet werden, um den für eine bestimmte Version des Codes verwendeten Code einzufrieren. Die REVISION zeigt zusätzliche "Hot" -Änderungen an, die auf diesen BUILD-Zweig angewendet wurden. Die Reihenfolge wäre also wie folgt:
- Festschreibungsnummer 4711: Alice hat Feature A zu Trunk / Master hinzugefügt
- Carl schafft Zweig bauen
1.2.100
- CI erstellt Build 1.2.100.0
- Festschreibungsnummer 4712: Bob hat Feature B in Trunk / Master geändert
- Festschreibungsnummer 4713: Alice hat Feature A im
1.2.100
Zweig behoben
- CI erstellt Build 1.2.100.1
Der Begriff REVISION kann sich auf beziehen
- eine Produktrevision (so verwenden es die meisten Leute)
- eine Überarbeitung eines bestimmten täglichen Builds (genau das macht MS)
Der Hauptunterschied zwischen den beiden Prozessen besteht darin, ob Sie Hotfixes auf CI-Builds anwenden möchten oder nicht und an welcher Stelle des Prozesses die Verzweigung vorgenommen wird. Dieser Aspekt wird wichtig, wenn Sie in der Lage sein möchten, nach erfolgreichem Test jederzeit einen bestimmten Build auszuwählen und genau diese Version auf die nächste offizielle Version Ihres Produkts zu übertragen.
In unserem Fall erstellt das CI-Tool ein Repository-Tag, sodass wir bei Bedarf immer die erforderlichen Informationen zur Verfügung haben. Mit SVN wird es noch einfacher, da Tags und Verzweigungen genauso implementiert werden - ein Tag ist nichts anderes als eine Verzweigung, unter der sich befindet /tags
.
Siehe auch
Aus dem FAQ-Bereich der TFS-Verzweigungsstrategie :
In welchem Zweig soll ich das P1-Ticket (Hotfix-Ticket) reparieren?
Das P1 sollte in dem Zweig festgelegt werden, der der in Production ausgeführten Codebasis am nächsten liegt. In diesem Fall sollte das P1 im Zweig Prod fixiert werden. Wenn Sie den Fix in einem anderen Zweig anwenden und die Änderungen in der Produktion übernehmen, besteht die Gefahr, dass Sie halbfertigen oder nicht getesteten Code aus den nachfolgenden Iterationen freigeben.
Nun können Sie sich darüber streiten, ob es sicher ist, direkt gegen den Prod-Zweig zu arbeiten. Denken Sie noch einmal darüber nach, dass ein P1, der sofortige Aufmerksamkeit erfordert, kein grundlegendes Problem im System sein sollte. Wenn es sich um ein grundlegendes Problem handelt, sollte es zum Product Backlog hinzugefügt werden, da dies möglicherweise eine weitere Analyse und Diskussion mit dem Kunden erfordert.
Eine weitere gute Lektüre ist die TFS-Verzweigungsanleitung