Frage

Ich verteile Software online, und frage mich immer, wenn es eine richtige Art und Weise ist die Versionsnummern besser zu definieren.

Lassen Sie uns A.B.C.D in den Antworten übernehmen. Wann Sie jede der Komponenten erhöhen?

Verwenden Sie andere Versionsnummer Tricks wie D mod 2 == 1 bedeutet, dass es ein Haus in Mitteilung ist nur?

Haben Sie Beta-Versionen mit ihren eigenen Versionsnummern haben, oder haben Sie Beta-Versionen pro Versionsnummer haben?

War es hilfreich?

Lösung

Ich fange die Year.Release [.build] Konvention zu mögen, dass einige Anwendungen (z Perforce) verwenden. Im Grunde ist es nur sagen, das Jahr, in dem Sie loslassen, und die Sequenz innerhalb dieses Jahres. So 2008.1 wäre die erste Version, und wenn Sie eine anderen einen Monat veröffentlicht oder später drei, würde es 2008.2 gehen.

Der Vorteil dieser Regelung ist, gibt es keine implizite „Größe“ der Veröffentlichung, in dem Sie in Streit darüber, ob ein Feature großen genug, um eine Hauptversion Zuwachs zu rechtfertigen oder nicht.

Ein optionales Extra ist auf der Build-Nummer zu markieren, aber das dazu neigt, nur für interne Zwecke zu sein (zum Beispiel auf die EXE / DLL hinzugefügt, so dass Sie die Datei überprüfen und sicherstellen, dass die richtige Build ist dort).

Andere Tipps

Meiner Meinung nach ist fast jede Versionsnummer Schema kann gemacht werden, mehr oder weniger vernünftig zu arbeiten. Das System I arbeiten verwendet Versionsnummern wie 11.50.UC3, wobei der U 32-Bit-Unix anzeigt, und der C3 ist eine Nebenversion (Fixpack) Nummer; andere Buchstaben sind für andere Plattformtypen verwendet. (Ich würde nicht dieses Schema empfehlen, aber es funktioniert.)

Es gibt ein paar goldenen Regeln, die so nicht weit festgestellt worden, die jedoch implizit, was die Leute gesprochen haben.

  • Sie lösen nicht die gleiche Version zweimal - einmal Version 1.0.0 für jeden freigegeben wird, kann es nie wieder freigegeben werden
  • .
  • Startnummern sollte monoton erhöhen. Das heißt, der Code in der Version 1.0.1 oder 1.1.0 oder 2.0.0 immer später sein sollte als Version 1.0.0, 1.0.9 oder 1.4.3 (jeweils).

Nun, in der Praxis, die Menschen haben Updates für ältere Versionen freizugeben, während neuere Versionen verfügbar sind - siehe GCC, zum Beispiel:

  • GCC 3.4.6 veröffentlicht wurde nach 4.0.0, 4.1.0 (und AFAICR 4.2.0), aber es die Funktionalität von GCC 3.4.x weiterhin nicht die zusätzlichen Features hinzufügen zu GCC 4.x hinzugefügt.

So haben Sie eine neuere Version Nummerierungsschema sorgfältig zu bauen.

Ein weiterer Punkt, den ich fest glauben:

  • Die Release-Version-Nummer ist auf die CM (VCS) System Versionsnummerierung, mit Ausnahme von trivialen Programmen unabhängig. Jede ernsthafte Stück Software mit mehr als einer Hauptquelldatei wird eine Versionsnummer in keinem Zusammenhang mit der Version jeder einzelnen Datei.

Mit SVN, können Sie die SVN-Versionsnummer verwenden könnte -. Aber wahrscheinlich würde nicht, wie es ändert sich auch unvorhersehbar

Für die Sachen mit denen ich arbeite, die Versionsnummer ist eine rein politische Entscheidung.

Im übrigen weiß ich von Software, die durch die Freisetzung von Version 1.00 bis 9.53 ging, aber das dann geändert zu 2,80. Das war ein grober Fehler - diktiert von Marketing. Zugegeben, Version 4.x der Software ist / war veraltet, so hat es nicht sofort für Verwirrung, aber Version 5.x der Software ist noch in Gebrauch und verkauft werden, und die Revisionen haben bereits 3,50. Ich bin sehr besorgt über das, was mein Code, der sowohl mit dem 5.x (alte) und 5.x (neue Version) arbeiten muss, wird tun, wenn der unvermeidliche Konflikt auftritt. Ich glaube, ich habe zu hoffen, dass sie trödeln beim Wechsel 5.x, bis die alten 5.x wirklich tot ist - aber ich bin nicht sehr optimistisch. Ich habe auch eine künstliche Versionsnummer, wie 9,60, verwenden Sie den 3,50-Code darstellen, so dass ich gesund if VERSION > 900 Tests tun kann, anstatt zu tun hat: if (VERSION >= 900 || (VERSION >= 280 && VERSION < 400), wo ich Version 9.00 von 900. repräsentieren Und dann gibt es die wesentliche Änderung eingeführt in Version 3.00.xC3 - mein Schema versagt Änderungen an den minor-Release Pegeln zu erfassen ... grummel ... grummel ...

NB : Eric Raymond bietet Software Release Praxis HOWTO einschließlich dem (verlinkt) Abschnitt zur Namensgebung (Nummerierung) Versionen.

Ich verwende D in der Regel als Build-Zähler (automatische Erhöhung von Compiler) Ich erhöhe C jedes Mal, wenn ein Build „öffentlich“ freigegeben wird (nicht jeder Build freigegeben) A und B sind als Major / Minor-Versionsnummer verwendet und manuell geändert.

Ich denke, es gibt zwei Möglichkeiten, um diese Frage zu beantworten, und sie sind nicht völlig kostenlos zur Verfügung.

  1. Technische: Increment-Versionen basieren auf technischen Aufgaben. Beispiel: D ist die Nummer aufzubauen, C ist Iteration, B eine Nebenversion ist, A ist eine Hauptversion. Definieren von kleineren und größeren Versionen ist wirklich subjektiv, aber Dinge wie Änderungen der zugrunde liegende Architektur zusammenhängen könnte.
  2. Marketing: Increment-Versionen auf, wie viele „neue“ oder „nützlich“ Funktionen Ihrer Kunden zur Verfügung gestellt werden. Sie können auch die Versionsnummern auf eine Update-Politik binden ... Änderungen an A muss den Benutzer eine Upgrade-Lizenz kaufen, während andere Änderungen nicht.

Unter dem Strich, glaube ich, ist die Suche nach einem Modell, das für Sie und Ihre Kunden funktioniert. Ich habe einige Fälle, in denen auch Versionen öffentliche Versionen sind, und ungeradee Versionen sind Beta- oder dev Versionen berücksichtigt. Ich habe einige Produkte gesehen, die ignorieren C und D alle zusammen.

Dann gibt es das Beispiel von Micrsoft, wo die einzige rationale Erklärung zu den Versionsnummern für die .Net Framework ist, dass Marketing beteiligt war.

Unsere Politik:

  • A - Signifikante (> 25%) Änderungen oder Ergänzungen in der Funktionalität oder Schnittstelle.
  • B - kleine Änderungen oder Ergänzungen in der Funktionalität oder Schnittstelle.
  • C - geringfügige Veränderungen, die brechen die Schnittstelle.
  • D - Fixes für ein bauen, dass das nicht ändern Schnittstelle.

Die Menschen neigen dazu, diese viel schwerer zu wollen, als es sein muss wirklich. Wenn Ihr Produkt nur einen einzigen langlebigen Zweig hat, nennt nur aufeinanderfolgende Versionen von ihrer Build-Nummer. Wenn Sie irgendeine Art von „kleineren Bug-Fixes sind kostenlos, aber Sie müssen für wichtige neue Versionen zahlen“ haben, dann verwenden 1.0, 1.1 ... 1.n, 2.0, 2.1 ... etc.

Wenn Sie nicht sofort können herausfinden, was die A, B, C und D in Ihrem Beispiel sind, dann natürlich Sie brauchen sie nicht.

Die einzige Verwendung die ich je von der Versionsnummer gemacht haben war, so dass ein Kunde mir sie verwenden Version sagen könnte, 2.5.1.0 oder was auch immer.

Meine einzige Regel ausgelegt ist, Fehler zu minimieren in diese Zahl Berichterstattung. alle vier Zahlen 1 Stelle sein, nur

1.1.2.3

ist in Ordnung, aber

1.0.1.23

ist es nicht. Die Kunden sind wahrscheinlich beiden Zahlen berichten (mündlich, zumindest) als "one-eins-zwei-three".

Auto-erhöhenden Nummern bauen oft zu Versionsnummern wie

1.0.1.12537

, die nicht wirklich helfen, auch nicht.

Eine gute und nicht-technisches System nur verwendet das Build-Datum in folgendem Format:

YYYY.MM.DD.BuildNumber

Wo ist Buildnumber entweder eine fortlaufende Nummer (Änderungsliste) oder gerade beginnt jeden Tag um 1 über.

Beispiele: 2008.03.24.1 oder 2008.03.24.14503

Dies ist vor allem für interne Veröffentlichungen, würden öffentliche Veröffentlichungen die Version als 2008,03 gedruckt sehen, wenn Sie nicht öfter entbinden als einmal im Monat. Maintenance-Releases erhalten als 2008.03a 2008.03b usw. gekennzeichnet. Sie sollten selten Vergangenheit „c“ gehen, aber wenn es funktioniert, es ist ein guter Indikator für Sie besser QA und / oder Testverfahren benötigen.

Version Felder, die vom Benutzer häufig gesehen werden, sollten in einem freundlichen „März 2008“ -Format, behalten ihnen die weitere technische Informationen in dem Dialog oder Protokolldateien ausgedruckt werden.

Größte Nachteil: nur den gleichen Code an einem anderen Tag kompilieren könnte die Versionsnummer ändern. Aber Sie können dies vermeiden, indem Sie die Versionskontrolle Änderungsliste als letzte Nummer verwenden und prüfen, gegen das, um zu bestimmen, ob das Datum und geändert werden muss.

Ich verwende V.R.M z.B. 2.5.1

V (Version) Änderungen sind ein komplett neu geschrieben
R (Revision) Änderungen sind wichtige neue Funktionen oder Fehlerbehebungen
M (Modifikation) Änderungen sind kleinere bux Korrekturen (Tippfehler, etc.)

ich manchmal ein SVN zu Nummer am Ende begehen.

Es ist alles wirklich am Ende des Tages subjektiv und einfach bis zu ihnen / Ihrem Team.

Werfen Sie einen Blick auf all die Antworten schon -. Alle sehr unterschiedlich

Ich persönlich verwende Major.Minor.*.* - Wo Visual Studio in der Revison füllt / Nummer automatisch aufzubauen. Dies wird verwendet, wo ich zu arbeiten.

Ein gutes benutzerfreundliche Versionsschema auf dem alten Mac OS entstand in diesem Apple-technischen Hinweis beschrieben: http://developer.apple.com/technotes/tn/tn1132.html

Ich Year.Month.Day mögen. So, v2009.6.8 würde die "Version" dieses Beitrags sein. Es ist unmöglich, zu vervielfältigen (vernünftigerweise) und es ist sehr klar, wenn etwas ist eine neuere Version. Sie könnten auch die Dezimalstellen fallen und machen es v20090608.

Im Falle einer Bibliothek, die Versionsnummer informiert Sie über die Maß an Kompatibilität zwischen zwei Versionen und damit, wie schwierig ein Upgrade sein wird.

Eine Bugfix-Release muss binär, Quelle und Serialisierung Kompatibilität erhalten.

Minor Releases bedeuten verschiedene Dinge für verschiedene Projekte, aber in der Regel die sie nicht brauchen Quelle Kompatibilität zu erhalten.

Wichtige Versionsnummern können alle drei Formen brechen.

Ich schrieb mehr über die Gründe hier .

In der Github Welt hat es populär geworden Tom Preston-Werner "semver" Spezifikation für Versionsnummern zu folgen.

http://semver.org/ :

  

eine Versionsnummer MAJOR.MINOR.PATCH gegeben, erhöhen die:

     

MAJOR Version, wenn Sie nicht kompatibel API-Änderungen, kleinere Version machen   wenn Sie die Funktionalität in einer rückwärtskompatiblen Weise hinzufügen und PATCH   Version, wenn Sie rückwärts-kompatibel Fehlerkorrekturen machen. Zusätzlich   Etiketten für die Pre-Release und bauen Metadaten sind als Erweiterungen verfügbar   zum MAJOR.MINOR.PATCH Format.

Für Inhouse-Entwicklung verwenden wir das folgende Format.

[Program #] . [Year] . [Month] . [Release # of this app within the month]

Zum Beispiel, wenn ich die Freigabe der Anwendung # 15 heute, und es ist das dritte Update in diesem Monat, dann wird meine Version # sein

15.2008.9.3

Es ist völlig nicht-Standard, aber es ist nützlich für uns.

In den letzten sechs Hauptversionen haben wir M.0.m.b verwendet, wobei M die Hauptversion ist, m ist die kleinere Version, und b ist die Build-Nummer. So veröffentlichten Versionen enthalten 6.0.2, 7.0.1, ..., bis zu 11.0.0. Fragen Sie nicht, warum die zweite Zahl ist immer 0; Ich habe einige Male gefragt, und niemand wirklich weiß. Wir haben nicht einen von Null hatte es seit 5,5 im Jahr 1996 veröffentlicht wurde

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top