Was ist der Unterschied zwischen dem Tilde-Symbol des Komponisten ~ und dem Potenzsymbol ^?

藏色散人
Freigeben: 2020-08-12 13:16:55
nach vorne
4048 Leute haben es durchsucht

Die folgende Tutorial-Kolumne von composer wird Ihnen den Unterschied zwischen dem Tilde-Symbol des Komponisten ~ und dem Kraftsymbol ^ vorstellen. Ich hoffe, dass es Freunden in Not hilfreich sein wird!

Was ist der Unterschied zwischen dem Tilde-Symbol des Komponisten ~ und dem Potenzsymbol ^?

Ich habe zu viele Leute gesehen, die Versionsnummern willkürlich geschrieben haben (tatsächlich ist es jetzt viel besser als zuvor. Die nächste Version von 1.9.0 muss 2.0.0 sein, und die nächste Version von 2.9.0 muss es sein). sei 3.0.0... ... Hauptsächlich, weil es vorher keinen Standard für die Benennung von Versionsnummern gab und jeder einfach nach Lust und Laune schrieb. Später wurde die semantische Versionierung gefördert und die Situation bei der Benennung von Versionsnummern verbessert. Es gibt jedoch immer noch viele Menschen, die nicht wissen, was die dreiteilige Versionsnummer bedeutet (werden Sie sterben, wenn Sie diese Spezifikationen in verschiedenen Schulungsschulen unterrichten?). ..).

Um es einfach auszudrücken (ich verschiebe es nur, die oben erwähnte Website macht es klarer): Die Bedeutung jedes Segments der dreiteiligen Versionsnummer lautet:

Große Version.Nebenversion.Patch-Version

Lass uns Sprechen Sie über die offensichtlichste erste Patch-Version. Wenn in Ihrer Software oder Bibliothek bereits einige Fehler behoben wurden, muss die Patch-Version +1 sein.

Lassen Sie uns über die Nebenversionsnummer sprechen. Wenn Sie Ihrer Codebasis neue Funktionen hinzufügen, beispielsweise ein RPG-Spiel, das Dinge automatisch aufnimmt, oder eine neue Methode, verursachen Benutzer keine Kompatibilitätsprobleme (BC), wenn sie Ihre Codebasis aktualisieren, also eine kleine Version Nr. +1 .

Wenn Ihre Software schließlich vollständig umgestaltet wurde oder Ihre Codebasis vollständig umgestaltet wurde, sodass Benutzer, die die neue Bibliothek aktualisieren, unweigerlich Kompatibilitätsprobleme verursachen, dann ist die Hauptversionsnummer +1.

Natürlich wird es Fälle geben, in denen Fehler geändert und gleichzeitig Funktionen hinzugefügt werden. Kurz gesagt, wenn die vorherige Ziffer +1 benötigt, müssen die folgenden Ziffern auf jeden Fall auf Null gelöscht werden.

Tatsächlich besteht keine Notwendigkeit, bei Software für Endbenutzer zu streng zu sein, da Endbenutzern die Version egal ist (mit Ausnahme der großen Versionsnummer ..., daher wurde die Versionsnummer im Chrome-Stil angezeigt. und Firefox folgten ebenfalls diesem Beispiel...), Für Autoren von Bibliotheksdateien ist es jedoch besser, sich an die Versionsnummer zu halten, da die von Ihnen festgelegte Versionsnummer den Bibliotheksaufrufern sehr wichtige Informationen liefert und sie zur Bestimmung Ihre Versionsnummer verwenden müssen ob Kompatibilitätsprobleme vermieden werden sollen.

Um ein klassisches Beispiel zu nennen: Obwohl Symfony 2/3/4 ähnlich verwendet werden, muss die größere Versionsnummer +1 sein, da zwischen diesen drei Versionen Schnittstelleninkonsistenzen bestehen. Wenn Ihre Bibliotheksdatei eine Schnittstellenänderung aufweist, die sie mit der vorherigen Version inkompatibel macht, selbst wenn es nur eine gibt, sollten Sie die Hauptversionsnummer mit +1 versehen.

Und wenn Sie einige Projekte mit Symfony 3.0.x entwickeln, gibt es theoretisch überhaupt kein Problem, selbst wenn Sie direkt auf 3.4.x aktualisieren.

Nachdem wir über die dreiteilige Versionsnummer gesprochen haben, sprechen wir über ein Problem, das PHPer stört. Was bedeuten die Symbole ^ und ~, die die Versionsnummer in Composer.json angeben? Was ist der Unterschied?

Bevor ich diesen Blog geschrieben habe, habe ich tatsächlich auf Baidu gesucht und wollte wissen, ob es dort viele verwandte Artikel gibt und ob es sich lohnt, diesen Artikel zu schreiben. Die Suchergebnisse zeigen, dass es tatsächlich jemand zusammengefasst hat. Obwohl die meisten davon nur ein Beispiel haben:

~1.2.3 steht für 1.2.3 <= Versionsnummer<1.3.0

^1.2.3 steht für 1.2.3 <= Versionsnummer< 2.0.0

Entsprechend Um den Inhalt zu übertragen, füge ich noch etwas hinzu: ~ bedeutet, dass die Versionsnummer nur den letzten Absatz ändern kann (wenn ~x.y ist, ist das Ende y, wenn es ~x.y.z ist, ist das Ende z). . In diesem Fall ist beispielsweise

~1.2 gleich> wie möglich, aber um sicherzustellen, dass keine Kompatibilitätsprobleme auftreten. Mit anderen Worten: Zusätzlich zur Hauptversionsnummer können auch die Nebenversionsnummer und die Patch-Versionsnummer geändert werden.

Aber es scheint, dass es ein sehr wichtiges Detail gibt, das noch niemand erwähnt hat. Bei der semantischen Versionierung ist die Versionsnummer, die mit 0 beginnt, etwas ganz Besonderes, und da ^ sich strikt an die Regeln der semantischen Versionierung hält, werden die folgenden Situationen auftreten (. früher Die Composer-Version verfügte nicht über eine solche Verarbeitung und wurde später korrigiert):

^0.3.0 ist gleich >=0.3.0 <0.4.0

eh? Sollte es nicht <1.0.0 sein?

Der Grund dafür ist, dass die Regel der semantischen Versionierung lautet: Wenn die Hauptversionsnummer mit 0 beginnt, bedeutet dies, dass es sich um eine instabile Version handelt (instabil). Wenn sie sich in einem instabilen Zustand befindet, darf die Nebenversionsnummer dies nicht tun abwärtskompatibel sein! Wenn Sie also eine Bibliothek angeben möchten, die mit 0 beginnt, müssen Sie Folgendes beachten:

~0.1 Diese Schreibweise ist sehr gefährlich, da ~0.1 gleich >=0.1.0 ist, was möglicherweise der Fall ist nicht abwärtskompatibel sein. In diesem Fall ist die sicherere Schreibweise

^0,1 (gleich >=0,1,0; <0,2,0)

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen dem Tilde-Symbol des Komponisten ~ und dem Potenzsymbol ^?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:chrisyue.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage