Was ich über Build-Nummern denke, ist, dass jedes Mal, wenn ein neuer nächtlicher Build erstellt wird, eine neue BUILDNUMBER generiert und diesem Build zugewiesen wird. Für meine 7.0-Versionsanwendung lauten die nächtlichen Builds also 7.0.1, 7.0.2 usw. Ist es so? Was nützt dann eine REVISION nach der Build-Nummer? Oder wird der REVISION-Teil nach jedem nächtlichen Build erhöht? Ich bin hier etwas verwirrt ... bezeichnen wir jeden nächtlichen Bau als GEBÄUDE ?
Das Format wird hier erwähnt: AssemblyVersion - MSDN
builds
versioning
A9S6
quelle
quelle
Antworten:
Ich habe es noch nie so geschrieben gesehen. Wo ich arbeite, verwenden wir das Formular MAJOR.MINOR.REVISION.BUILDNUMBER, auf dem MAJOR eine Hauptversion ist (normalerweise viele neue Funktionen oder Änderungen an der Benutzeroberfläche oder dem zugrunde liegenden Betriebssystem), MINOR eine Nebenversion (möglicherweise einige neue Funktionen) Bei einer früheren Hauptversion handelt es sich bei REVISION in der Regel um einen Fix für eine frühere Nebenversion (keine neue Funktionalität), und BUILDNUMBER wird für jeden neuesten Build einer Revision inkrementiert.
Beispielsweise kann eine Revision für die Qualitätssicherung freigegeben werden, und sie weist ein Problem auf, das geändert werden muss. Der Fehler wurde behoben und mit derselben REVISIONSNUMMER, aber einer erhöhten BUILDNUMBER, an QA zurückgesendet.
quelle
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:
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:
1.2.100
1.2.100
Zweig behobenDer Begriff REVISION kann sich auf beziehen
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 :
Eine weitere gute Lektüre ist die TFS-Verzweigungsanleitung
quelle
Microsoft beschreibt den Zweck jeder Komponente einer .NET-Versionsnummer in der MSDN-Dokumentation für die
Version
Klasse. Hier ist der relevante Teil:http://msdn.microsoft.com/en-us/library/system.version.aspx
quelle
Build
darecompilation of the same source
scheint ein wichtiger punkt zu sein, der übersehen wird. Wenn es sich um eine Codeänderung handelt (für die keine ganz neue Major / Minor-Erhöhung erforderlich ist),Revision
muss auch die geändert werden.Es gibt mindestens ein paar verschiedene Dinge, die ich mir als Referenz für die Build-Nummer vorstellen könnte:
Version der Versionsverwaltung, die veröffentlicht wurde. Wenn zum Beispiel die Version 12345 veröffentlicht wurde, kann dies anhand der Build-Nummer nachverfolgt werden, und wenn sie gepatcht ist, werden möglicherweise Revisionen veröffentlicht, da es sich nicht um neue Funktionen handelt, mit denen die Haupt- oder Nebenversionen erweitert werden und die Build-Nummer muss gespeichert werden, falls jemand diesen Build erneut ausführen möchte.
Continuous Integration Server-ID. In diesem Fall nummeriert der CI-Server möglicherweise jeden Build, den er ausführt. Daher wird die Build-Nummer für einen erfolgreichen Build verwendet und der Revisionsteil wird in diesem Szenario nicht benötigt.
Es mag andere geben, die ich nicht kenne, aber diese sind die großen, die ich kenne, wenn es um Zahlen auf Codebasis geht.
quelle
Eine Build-Nummer wird normalerweise bei jedem Build erhöht, damit sie eindeutig ist.
Der Einfachheit halber sollten einige die Build-Nummer zurücksetzen, wenn die MAJOR- oder MINOR-Nummern angestoßen werden.
Die meisten Continuous Integration-Engines ermöglichen automatisch generierte eindeutige Build-Nummern.
quelle
Die Revision kann für Patches der Builds verwendet werden. Nehmen wir an, dass zwei Teams an einem Produkt arbeiten.
Team 1 ist das Hauptentwicklungsteam und erstellt nächtliche Builds mit dem folgenden Versionsschema 1.0.X.0, wobei X inkrementiert wird. Jetzt haben sie Build 1.0.50.0. Team 2 nimmt von Zeit zu Zeit einen Build vor. Nehmen wir an, sie nehmen den Build der letzten Woche, der 1.0.43.0 ist, und beginnen ihn zu verwenden. Team 1 rückt auf 1.0.51.0 vor, wenn Team 2 ein Problem in 1.0.43.0 feststellt.
Jetzt nimmt Team 1 diesen Build (43), behebt das Problem und stellt Team 2 den Build 1.0.43.1 zur Verfügung. Der Fix wird möglicherweise auch im Hauptbuild weitergegeben, sodass die Änderung in 1.0.52.0 angezeigt wird.
Hoffe das ist klar und hilfreich.
* Revision ist nützlich, wenn nicht alle am Projekt Beteiligten den gleichen Build verwenden und Sie bestimmte Builds patchen müssen.
quelle
Lassen Sie mich nur sagen, wie ich es sehe und benutze ...
Programmname Version major.minor.build.revision
major: Für mich ist das das aktuelle Projekt, an dem ich arbeite. Die Nummer ändert sich erst, wenn ich ein neues Projekt mit demselben Programmnamen starte. Dies bedeutet, dass ich buchstäblich ein neues Programm des gleichen Geschlechts schreiben werde (Beispiel: access v1 - access v-2 - access v-3 * alle das gleiche Programm, aber komplett neu geschrieben).
minor: Dies bedeutet, dass ich dem aktuell veröffentlichten Projekt Funktionen hinzufüge. Zum Beispiel habe ich die Möglichkeit hinzugefügt, eine Quittung zu drucken oder Bilder zu importieren. Grundsätzlich möchte ich jetzt zusätzliche Funktionen hinzufügen und nicht auf die nächste Hauptversion warten, um dies zu tun.
build: Hiermit zeige ich sehr kleine Änderungen in der veröffentlichten major.minor-Version an. Dies kann eine Änderung des Layouts, des Farbschemas usw. sein.
Revision: Dies wird verwendet, um eine Fehlerbehebung im aktuell veröffentlichten major.minor.build anzuzeigen. - Es gibt Fälle, in denen ich das aktuelle Projekt nicht weiterentwickle und ein Fehler auftritt. Dieser Fehler muss behoben und veröffentlicht werden. Es bedeutet nur, dass ich das, was ich bereits veröffentlicht habe, korrigiere, damit es richtig funktioniert. Ich würde dies auch verwenden, wenn ich an einem neuen Build, einer neuen Ergänzung oder einer neuen Hauptversion arbeite. Die veröffentlichte Version muss natürlich gepatcht werden, während wir auf die nächste Haupt-, Neben- oder Build-Version warten.
Auf diese Weise kann ein fertiggestelltes oder blockiertes Projekt bis zur Veröffentlichung der nächsten Version repariert und nutzbar gemacht werden.
Ich hoffe, dies gibt jemandem ein besseres Verständnis dafür, wie diese Art der Versionierung funktionieren würde (oder sollte). Für mich ist es die einzige Definition und Praxis, die bei dieser Art der Versionierung wirklich Sinn macht.
quelle
Ich habe nur eine Build-Nummer als letzte Nummer in der Release-ID gesehen. Ich bin mir nicht sicher, wie Sie zu einer Revision einer Build-Nummer kommen würden. Ich nehme an, dass Sie einige der nicht erstellten Ressourcen (Symbole, DB-Skript usw.) geändert haben, aber die meisten Projekte, an denen ich in letzter Zeit gearbeitet habe, haben all diese Dinge ebenfalls unter Versionskontrolle, sodass der Erstellungsprozess sie abruft, wenn Installer / Release erstellen. Ich mag Build-Nummern mit Zeitstempel, obwohl nicht ganz so, wie @David es beschreibt (ich mag major.minor.revision.HHMM). Bei meiner Arbeit verwenden wir jedoch nur eine fortlaufende Nummer, die unser Build-Server generiert.
quelle
Wie bei jkohlhepp verwenden wir den dritten Teil der Version, um die Versionsnummer in SubVersion anzuzeigen, und den vierten, um die Versionsnummer von unserem Continuous Integration Server (für uns Jenkins) anzuzeigen. Dies hat mehrere Vorteile: Wenn die Versionsnummer von unserem CI-Server festgelegt wird, entfällt ein manueller Schritt, der sonst versehentlich übersehen werden könnte. Es ist leicht zu überprüfen, dass ein Entwickler keine freche Version von seinem Entwicklungs-PC erstellt hat (was dazu führen würde, dass diese Zahlen Null sind). und es ermöglicht uns, jede Software auf den Code, aus dem sie generiert wurde, und auf den CI-Job, der sie erstellt hat, zurückzugreifen, indem wir nur die Versionsnummer betrachten - was wir gelegentlich sehr nützlich finden.
quelle
Es ist was immer du willst. Ich neige dazu, year.month.day.hhmm für meine Major.minor.build.revision zu verwenden. Wenn ich mehr als eine pro Minute produziere, stimmt etwas nicht. Sie können einfach ein einfaches Inkrement verwenden, oder ich habe einige ausgefeilte Generatoren für sie gesehen. Was Sie wollen , es zu sein. Was sie tun müssen, ist, es so zu machen, dass Sie zu der Quelle gelangen, die zum Erstellen dieser Ausgabe verwendet wurde.
quelle
Die letzten beiden Ziffern geben die gesamte Build-Nummer an
1.01.2.1234
Die Build-Nummer ist 2.1234, die meisten Leute werden jedoch nur 1234 verwenden, da sich der 2-Teil nicht häufig ändert.
quelle
Unser Team verwendet die dritte Nummer (Revision) als Revisionsnummer aus dem Subversion-Repository. Wir verwenden die vierte Nummer (Build) als Build-Nummer von unserem TeamCity Continuous Integration Server, der den Build tatsächlich erstellt. TeamCity erstellt während des Erstellungsprozesses eine neue AssemblyInfo-Datei mit den richtigen #.
quelle