2008-09-26 8 views
16

Ich verstehe, dass Microsoft diese Vorlage bei der Versionierung ihrer Produkte verwendet: Major.Minor.Build.Revision.Wie versionieren Sie Ihre Projekte?

Der Major wird geändert, wenn die "Entwickler" zeigen wollen, dass es eine große Veränderung in der Software gibt, und Rückwärtskompatibilität kann nicht angenommen werden. Vielleicht ist eine größere Überarbeitung des Codes getan.

Minor-Nummer stellt eine erhebliche Verbesserung mit der Absicht der Abwärtskompatibilität dar.

Build-Nummer ist eine kleine Änderung, zum Beispiel eine Neukompilierung der gleichen Quelle.

Revision wird verwendet, um ein Sicherheitsloch zu fixieren und sollte vollständig austauschbar sein. Build und Revision sind optional. Diese Information basiert auf MSDN Version Class.

Wie können Sie Ihre Projekte versionieren und warum werden sie auf diese Weise versioniert?

Antwort

7

Wir machen im Allgemeinen major.minor [.maintenance [.build]], wo ich arbeite, aber es scheint ein wenig pro Projekt zu variieren.

Major/Moll das gleiche wie du erwähnt. Die Wartung würde für kleine (Bug-) Fixes erhöht und für jedes Mal, wenn der Build-Server läuft, erstellt.

1

Ich benutze major.minor.point.revision, wobei Punkt ist ein Bugfix-only Release und Revision ist die Repository-Revision. Es ist einfach und funktioniert gut.

1

ich major.minor gerade. Da ich ein einzelner Entwickler (mit gelegentlicher Hilfe) bin, der an einer Web-App arbeitet, interessieren sich die meisten Leute nicht für die kleineren Korrekturen, die ich mache. Ich wiederhole also die Nebenversionen, indem ich neue Funktionen und Hauptversionsnummern einfüge, wenn ich etwas von einem Wechsel/Upgrade mache. Ansonsten ignoriere ich einfach die kleinen Korrekturen, so weit die Versionsnummern gehen (obwohl ich Subversion-Revisionsnummern habe, wenn ich mich selbst zurückverweisen muss).

1

Ich arbeite an vielen kleineren Projekten und ich persönlich fand das nützlich.

PatchNumber.DateMonthYear

Dies ist für kleine Web-basierte Tools, wo die Benutzer sehen können, wann das letzte Update und wie oft hat es aktualisiert.

PatchNumber ist die Anzahl der veröffentlichten Versionen und der Rest wird verwendet, um die Benutzer anzuzeigen, wenn diese veröffentlicht wurden.

2

Ich sehe oft Xyz wo X ist das Jahr nach der Versionsnummer und yz ist der Monat des Jahres. I.e. 201 ist Januar, 2 Jahre nach der Veröffentlichung. I.e. wenn das Produkt Mai startet, ist es erste Release-Nummer ist 105. Veröffentlichung im Februar nächstes Jahr 202

2

Wir in der Regel Version unserer Projekte auf Basis des aktuellen Release-Datum, YYYY.MM.DD. *, und wir lassen die Build Die Zahl wird automatisch generiert. Wenn wir also heute eine Veröffentlichung hatten, wäre dies 2008.9.26.BUILD.

0

Ich habe nur eine Nummer. Erste Veröffentlichung ist 001. Die dritte Beta der zweiten Veröffentlichung ist 002b3 und so weiter. Dies ist nur für den persönlichen Kram gedacht, ich habe im Moment eigentlich nichts "freigegeben", also ist das alles Theorie.

4

Ich persönlich mag ein Schema verwenden, die auf der Ebene der Abwärtskompatibilität konzentriert sich die Benutzer des Projekts/Produkt erwarten können:

Vor 1.0:

  • 0.0.1 = Erste
  • Release
  • 0 .-. X = Rückwärts kompatibel Update
  • 0.X.0 = Rückwärts inkompatibel Update

Nach 1,0:.

  • -.- X = Update ohne Schnittstelle ändert
  • -.X.0 = Update mit rückwärts kompatible Schnittstelle Ergänzungen
  • X.0.0 = rückwärtsinkompatible Update

Die Verwendung der Kompatibilität als zentraler Punkt in der Versionsnummer erleichtert es den Benutzern, insbesondere wenn das Produkt eine Bibliothek ist, zu beurteilen, ob sie ein glattes und kein verbessertes Upgrade erwarten können oder nicht.

+0

Semantic Versioning hat die Szene betreten, seit ich diese Antwort geschrieben habe: http://semver.org/ –

1

Major.minor.patch.build mit Patch als Hotfix oder Patch-Release.

Wenn Sie QA durch in und SVN erhalten können, könnten Sie die Svn HEAD Revision als Build-Nummer verwenden. Auf diese Weise beschreibt jeder Build, woher er stammt, was die Quellcodeverwaltung und was im Build ist. Dies bedeutet, dass Sie werden Builds, die mit Lücken steigen (1.0.0.1, 1.0.0.34 ....)

0

ich mit einem pseudo-ähnlichen Format wie Ubuntu gestartet: Y.MMDD

Diese

hilft für ein paar Gründe:

  • es einfacher ist für die Version Anforderungen zu überprüfen: if (Version < 8,0901)die/Ausfahrt/etc.;
  • kann es

An diesem zweiten Punkt (Rubin & Rake) in Ihrem Build-Prozess automatisch generiert werden:

def serial(t) 
    t = Time.now.utc if not t.instance_of?(Time) 
    t.strftime("%Y").to_i - 2000 + t.strftime("0.%m%d").to_f 
end 

serial(Time.now)  #=> 8.0926 
serial(Time.now.utc) #=> 8.0927 

HINWEIS: t.strftime ("% Y% m % d ") to_f - 2000 läuft in Fließkomma Ungenauigkeiten. 8,09269999999992

1

Major.Minor.BugFix.SVNRevision

z: 3.5.2.31578

  • Die SVN Revision gibt Ihnen den genauen Frieden von Code an den Kunden gesendet. Du bist dir absolut sicher, ob dieser Bugfix da war oder nicht.
  • Es hilft auch bei der Suche nach der richtigen PDB, wenn Sie einen Anwendungsfehler haben. Passen Sie einfach die SVN-Revisionen auf Ihrem Build-Server an, kopieren Sie die PDB in den EXE-Speicherort, öffnen Sie den Debugger, und Sie erhalten den Absturz-Stack-Trace.
0

verwendete ich von Versionierung ihre Clipper Compiler in den 80er Jahren die Nantucket Art und Weise zu mögen:

Clipper Winter-1984
Clipper Sommer 1985
Clipper Winter-1985
Clipper Herbst 1986
Clipper Sommer 1987

Oh und Overlays ....

[bekommt Tränen in den Augen ]

Verwandte Themen