Passen unterschiedliche Versionsnamenskonventionen zu unterschiedlichen Projekten? Was benutzt du und warum?
Ich persönlich bevorzuge eine hexadezimale Build-Nummer (z. B. 11BCF), die sehr regelmäßig erhöht werden sollte. Und dann für Kunden eine einfache 3-stellige Versionsnummer, dh 1.1.3.
1.2.3 (11BCF) <- Build number, should correspond with a revision in source control
^ ^ ^
| | |
| | +--- Minor bugs, spelling mistakes, etc.
| +----- Minor features, major bug fixes, etc.
+------- Major version, UX changes, file format changes, etc.
quelle
$version = New-Object System.Version 1, 2, 3, 4; $version.ToString(); $version.Build;
Die semantische Versionierung ( http://semver.org/ ) verdient hier eine Erwähnung. Dies ist eine öffentliche Spezifikation für ein Versionsschema in Form von
[Major].[Minor].[Patch]
. Die Motivation für dieses Schema besteht darin, die Bedeutung mit der Versionsnummer zu kommunizieren.quelle
Ich benutze es nicht, aber ich habe es gesehen und es ist eine interessante Struktur:
Year.Month.Day.Build
Selbsterklärend.
quelle
Ich versuche, die RubyGems Rational Versioning-Richtlinie zu verwenden, in der:
quelle
Hier ist ein sehr differenzierter Ansatz zur Versionsnummerierung:
N.x.K
, woN
undK
sind ganze Zahlen. Beispiele:1.x.0
,5.x.1
,10.x.33
. Wird für Zwischenbauten verwendet .N.M.K
, WoN
,M
undK
ganze Zahlen sind. Beispiele:1.0.0
,5.3.1
,10.22.33
. Wird für Releases verwendet .N.x.x
, woN
ist eine ganze Zahl. Beispiel:1.x.x
. Wird für Supportzweige verwendet .N.M.x
, woN
undM
sind ganze Zahlen. Beispiel:1.0.x
. Wird für Release-Zweige verwendet .Hier ist das Bild zur einfachen Veranschaulichung des Versionsnummerierungsansatzes:
PA
bedeutet Pre-AlphaA
bedeutet AlphaB
bedeutet BetaAR
bedeutet Alpha-ReleaseBR
bedeutet Beta-ReleaseRC
bedeutet Release CandidateST
bedeutet StabilVorteile eines solchen Versionsnummerierungsansatzes sind folgende:
N.x.K
) und Release (N.M.K
). Release bedeutet, dass eine Software mit der vollständigen Versionsnummer (N.M.K
) eine Art Qualitätsmanagementprozess innerhalb des Lieferantenunternehmens / der Organisation / des Teams durchlaufen hat.Es gibt auch ein komplexeres Diagramm, das den Versionsansatz im Detail darstellt. Außerdem finden Sie möglicherweise nützliche Präsentationsfolien , die den Übergang zum Versionsansatz und zur Anwendung SCMFViz beschreiben und die Grundprinzipien des Versionsnummerierungsansatzes veranschaulichen. Präsentationsfolien erläutern auch, warum es wichtig ist, während der gesamten Laufzeit des Softwareprojekts denselben Versionsansatz einzuhalten.
Persönlich geht meine Einstellung zur Verwendung von Datumsversionen anstelle von realen Versionsnummern davon aus, dass Entwickler der Software mit datierten Versionen:
N
inN.M.K
) ist sowohl für die architektonische Lösung als auch für das zugrunde liegende Prinzip der Anwendung verantwortlich. Die HauptversionsnummerN
ist entsprechend den Änderungen in der Architektur oder den Änderungen der Hauptideen und Prinzipien ihrer Arbeitsweise / Funktionsweise zu ändern.Dieser Ansatz mag ein wenig kontrovers erscheinen, aber ich glaube, dass dies die einfachste Möglichkeit ist, Software die entsprechenden Versionsnummern zuzuweisen.
quelle
Für jede Hauptversion, die Sie veröffentlichen, ist es nicht ungewöhnlich, dass Sie eine funktionierende Version verwenden, die Sie intern aufrufen. In meinem letzten Job haben wir uns beispielsweise auf eine Hauptversion mit der folgenden Ubuntu-inspirierten Namenskonvention bezogen:
[kranker Zustand] [alliterativer Tiername]
Die Namen wie " Limp Lamprey ", " Wounded Wombat " und " Asthmatic Anteater " gaben .
Vergewissern Sie sich, dass Ihre Kunden nichts davon wissen, es sei denn, es ist ein wirklich cooler Name.
quelle
Generation.Version.Revision.Build (9.99.999.9999)
Die Generation wechselt selten. Nur ein großes Produkt einschalten: DOS -> Windows, komplette Reengineering.
Die Version ist für große inkompatible Änderungen, neue Funktionen, Änderungen an bestimmten Paradigmen der Software usw. gedacht.
Überarbeitungen werden häufig durchgeführt (kleinere Funktionen und Fehlerbehebung).
Build ist interne Information.
quelle
git describe
Bietet eine schöne Erweiterung der von Ihnen gewählten Nummerierungskonvention. Es ist einfach genug, dies in Ihren Build / Packaging / Deployment-Prozess einzubetten.Angenommen, Sie nennen Ihre markierten Release-Versionen ABC (major.minor.maintenance).
git describe
Bei einem bestimmten Commit wird der letzte getaggte Vorgänger des Commits gefunden, anschließend die Anzahl der seitdem durchgeführten Commits und das abgekürzte SHA1 des Commits angegeben:Wenn Sie sich tatsächlich in einer der Versionen befinden, erhalten Sie nur den Tag (1.2.3).
Dies hat den schönen Vorteil, dass Sie genau wissen , von welcher Quelle Sie gebaut haben, ohne jeden einzelnen Build einzeln nummerieren zu müssen.
quelle
Major.Minor.Public (Build) [Alpha / Beta / Trial], wie "4.08c (1290)"
quelle
Ich bevorzuge Versionsnummern, die eine semantische Bedeutung haben. Solange Sie die Versionsnummer verwenden können, um mit einer bestimmten Version gemeldete Fehler in Bezug auf Änderungen im Quellcode (und in Ihrem Aktivitätsmanagementsystem) zu verfolgen, verwenden Sie wahrscheinlich die richtige Methode.
Ich benutze .NET, damit ich mit dem .NET-Versionsnummerierungssystem nicht weiterkomme, aber ich versuche, den Zahlen so mit eine semantische Bedeutung zu geben
Major.Minor.Build.Revision
Wir stellen immer sicher, dass die Versionsnummer in irgendeiner Weise sichtbar ist (mit unseren Batch-Konsolen-basierten Programmen werden sie auf die Konsole und in eine Protokolldatei gedruckt, mit Web-Apps in der Menüleiste in der Regel ganz oben).
Auf diese Weise können Kunden, die Probleme melden, anhand der Versionsnummer nachverfolgen, ob sie die neueste Version verwenden und wie viele Probleme mit bestimmten Versionen aufgetreten sind.
Auf die Rückverfolgbarkeit kommt es an!
quelle
Wir verwenden Major.Minor.Build # .YYMMDD [Suffix], da wir normalerweise nur einen Produktionsbuild an einem bestimmten Tag ausführen (aber ab / c / d-Suffix verwenden, wenn es mehr als einen gibt) und das YYMMDD Benutzern / Kunden / Management gibt ein Hinweis auf das Alter des Builds, 6.3.1389 nicht.
Die Hauptzahlen steigen mit signifikanten Produktmerkmalen (bezahlt).
Kleinere Zahlen steigen mit Korrekturen / Verbesserungen (kostenloses Update).
Build nimmt immer zu; Nicht alle bauen ein Schiff, es ist also kein linearer Fortschritt.
quelle
Versionsnummern sollten genügend Informationen enthalten, um Konflikte zu vermeiden und einen Fehler in den Problemen mit dem falschen Release-Typ zu beheben, aber keine zusätzlichen Informationen enthalten, die nicht relevant sind.
Wenn Sie beispielsweise das Datum verwenden, können Kunden feststellen, dass sie eine ältere Version haben, und Patches für ältere Versionen können verwirrende Versionen haben.
Ich persönlich mag die semantische Versionierung :
Major
.Minor
.Patch
Patch
erhöht sich jedes Mal, wenn Sie einen Build freigeben.Minor
erhöht sich jedes Mal, wenn abwärtskompatible Funktionen hinzugefügt werden.Major
Inkrementiert, wenn neue Funktionen nicht abwärtskompatibel sind.Major
== 0, bist du in Alpha / Pre-Release.Major
> = 1 sind Ihre öffentlichen Veröffentlichungen.1.5.3
verwendet, auf einen Blick erkennen, dass er ein Upgrade durchführen kann,1.5.4
um die Patches zu erhalten,1.6.0
die zusätzliche Funktionalität bieten und auf die er kein Upgrade durchführen sollte2.0.0
(zumindest ohne die Änderung zu verarbeiten).quelle
X.Y.Z
ist unsere interne Versionsnummer.X.Y
ist die öffentliche Versionsnummer, die für unsere Kunden eine Bedeutung hat. Wenn eineX.Y.Z
Version veröffentlicht wird, wird es nie eineX.Y.(Z+1)
Version geben: Die öffentliche Version ist immer die letzte der Serie.X
wird erhöht, wenn eine Hauptversion veröffentlicht wird.Y
wird für die Wartungszweige dieser Hauptversionen verwendet, nur für Fehlerbehebungen.Z
wird intern verwendet und hat keine feste Bedeutung. Bis jetzt erstelle ich eine neueZ
Version, wenn ich denke, dass die Anwendung eine Reihe von Funktionen hat, die für Nicht-Entwickler interessant und relativ stabil sind. Auf diese Weise kann ich eine Demo der "letzten bekannten guten Version" der Anwendung anzeigen, wenn jemand danach fragt. In naher Zukunft plane ich, dieZ
Nummernversionen für die Benennung eines "Ziels" von Funktionen in unserem Bugtracker zu verwenden.Als Randnotiz verwenden wir maven (mit dem
release
Befehl), um die Versionsnummer zu erhöhen . Es gibt also auchX.Y.Z-SNAPSHOT
Versionen (die jede Version zwischenX.Y.(Z-1)
und anzeigenX.Y.Z
).quelle