Versionsnummern
Diese Seite ist für Entwickler, die ein Seitenpaket oder ein Paket, das es verlangt, veröffentlichen. Ein Paket hat mehrere Versionsfelder, und sie erfüllen verschiedene Aufgaben: Eines entscheidet, ob eine Anforderung erfüllt ist, eines wird nur gezeigt, eines wird gar nicht gelesen. Sie richtig zu setzen zählt am meisten für Pakete, die andere Pakete verlangen, weil der Setup-Assistent Versionen vergleicht, um zu entscheiden, ob er ein Paket erneut herunterlädt.
Inhalt
- Die Versionsfelder
- Wie eine Paketversion gelesen wird
- Was die ausgelieferten Pakete nutzen
- Fallen
- Empfohlene Form
- Verwandte Seiten
Die Versionsfelder
| Feld | Wo | Genutzt für | Erzwungen |
|---|---|---|---|
| Versionsnummer | <version><number> | Die Paketversion, mit dem Release verbunden | Muss ein einfaches Token sein, bis zu 64 Zeichen aus 0-9 A-Z a-z . _ + - |
| Release | <version><release> | Die zweite Hälfte der Paketversion | Dieselbe Regel für Tokens |
| Produktversion | <ezpublish><version> und <named-version> | Auf der Paketseite als Für Exponential gezeigt | Nur, dass <ezpublish> existiert (bei package/upload) |
| Formatversion | Attribut version von <package> | Nichts: parseDOMTree() liest es nicht | Nein |
| Version im Index | Attribut version in index.xml | Im Schritt der Seitentypen des Setup-Assistenten gezeigt; mit einem importierten Paket verglichen | Nein |
Die Regel für Tokens ist eZPackage::isValidDefinitionToken() in kernel/classes/ezpackage.php; eine Definition, die sie verletzt, wird
gar nicht gelesen (Pflichtfelder in package.xml).
Wie eine Paketversion gelesen wird
eZPackage::getVersion() verbindet die beiden Hälften mit einem Bindestrich: <number>-<release>. Mit diesem Paar wird min-version in
einem <require> verglichen, und dieses vergleicht der Setup-Assistent zwischen einem importierten Paket und dem Index. Der Vergleich ist
eZPackageVersion::compareFull() in kernel/classes/ezpackageversion.php:
- Der Teil nach dem letzten Bindestrich ist nur dann die Release-Nummer, wenn er nur aus Ziffern besteht.
1.0-1ist Version1.0, Release1. Sonst ist der ganze Text die Versionsnummer, ohne Release. - Versionsnummern werden nach dem Vorrang von Semantic Versioning 2.0.0 verglichen. Ältere Formen werden ebenfalls gelesen:
1und1.0als1.0.0,1.2.3.4mit dem vierten Teil nach PATCH,3.4.0beta1als Vorabversionbeta1. - Eine Version mit Vorabversion kommt vor derselben Version ohne. Bezeichner von Vorabversionen werden einzeln verglichen: numerische numerisch, andere in ASCII-Reihenfolge.
- Die Release-Nummern werden zuletzt verglichen, numerisch, eine fehlende als
0:1.0-1<1.0-2<1.0.1-1.
Was die ausgelieferten Pakete nutzen
In den zwei Quell-Repositorys von 7x am 18.10.2026 geprüft:
| Pakete | <number> | <release> | <ezpublish><version> |
|---|---|---|---|
Die 5 Seitenpakete, cjw_multisite_democontent, beide Pakete sevenx_multisite_democontent | 6.0 | 15-stable | 6.0.15-stable |
sevenx_democontent | 6.0 | 14-stable | 6.0.14-stable |
sevenx_banners, sevenx_classes, sevenx_democontent_clean, die drei sevenx_design_* | 6.0 | 10-stable | 6.0.10-stable |
sevenx_extension | 6.0 | 6.0.15-stable | 6.0.15-stable |
Das Release folgt der Patch-Nummer eines Release von Exponential 6.0 (10, 14, 15), demselben Release, das <ezpublish><version> nennt. Die
Seitenpakete verlangen ihre Abhängigkeiten mit min-version="5.1" oder min-version="1.0", und in der index.xml von 6.0.15 werden die
Seitenpakete von 7x mit version="6.0-15-stable" aufgeführt, demselben Text wie ihr <number>-<release> (bis zum 19.10.2026 wurden die vier
Seitenpakete von 7x als 1.0.0-0 und cjw_multisite als 6.0.15-0 aufgeführt).
Fallen
Ein Release mit einem Zustandswort (in 6.0.15 behoben). Ab 6.0.15 liest compareFull() Ziffern, gefolgt von einem Zustandswort, als
Release: 6.0-15-stable (und 6.0-15stable) ist Version 6.0, Release 15. Ein stabiles Wort (stable, final, release, ga)
bedeutet keine Vorabversion, sodass 6.0-15-stable gleich 6.0-15 ist und ein min-version="6.0" erfüllt. Jedes andere Wort macht eine
Vorabversion dieses Release: 6.0-15-rc1 < 6.0-15. Dieselben stabilen Wörter nach einer alten Versionsnummer (6.0.15stable, 1.0-final)
sind ebenfalls keine Vorabversion.
Hinweis Vor 6.0.15 war ein Release, das nicht nur aus Ziffern bestand, kein Release:
6.0-15-stablewurde als Version6.0.0mit der Vorabversion15-stablegelesen, niedriger als6.0, sodass einmin-version="6.0"nicht erfüllt war und der Assistent das importierte Paket als zu alt behandelte. Releases wurden damals auch als Text verglichen (9-stableüber15-stable); ab 6.0.15 werden sie als Zahlen verglichen. Eine Installation älter als 6.0.15 liest sie weiterhin auf die alte Weise, sodass ein Paket für eine solche weiter5.1oder1.0verlangen sollte, wie es die ausgelieferten Seitenpakete tun.
Auch die Version im Index wird verglichen. Wenn der Index eine höhere Version führt als ein importiertes Paket, bietet der Schritt der
Seitentypen den Eintrag des Index statt des importierten an (eZStepSiteTypes::createSitePackagesList()). Im Kickstart-Modus wird der
Eintrag des Index immer vorgezogen. Halten Sie die Version im Index gleich dem <number>-<release> des Pakets.
Die Produktversion ist keine Prüfung der Kompatibilität. Nichts vergleicht <ezpublish><version> mit dem laufenden Release. Sagen Sie
in der Beschreibung und im README des Quell-Repositorys, für welche Releases ein Paket gedacht ist.
Empfohlene Form
Für ein neues Paket oder ein neues eigenes Release:
- To do:
<number>: Semantic Versioning, drei Zahlen (1.0.0,1.2.0). Die Assistenten zum Erstellen bestehen darauf: höchstens 24 Zeichen, weil die Tabelleezpackage<number>-<release>in 30 Zeichen speichert (eZPackageVersion::MAX_NEW_LENGTH). - To do:
<release>: eine ganze Zahl,1für den ersten Build einer Version, erhöht, wenn dieselbe Version erneut paketiert wird. - To do:
<ezpublish><version>: das Release von Exponential, auf dem Sie es gebaut und getestet haben, etwa6.0.15-stable, mit<named-version>6.0</named-version>. - To do: Das Attribut
versioninindex.xml: dasselbe<number>-<release>. - To do: Das Attribut
releasedes Eintrags im Changelog: dasselbe Release (Einträge im Changelog). - To do: Eine
min-versionin einem Seitenpaket, die eine Version nennt, die das verlangte Paket wirklich hat, gleich geschrieben.
<version>
<number>1.2.0</number>
<release>1</release>
</version>Wie Sie Ihre eigenen Releases über die Zeit nummerieren, steht auf Eigene Pakete versionieren. Die Einstellungen und die Seite der Assistenten stehen in Paketlizenzen und Semantic Versioning.
Verwandte Seiten
- Anforderungen an die Dokumentation von Seitenpaketen
- Abhängigkeiten angeben
- Pflichtfelder in package.xml
- Das Format index.xml
- Semantic Versioning 2.0.0
- Seitenpakete: hier beginnen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.