# Semantische Versionierung anwenden

### Disclaimer

<span style="white-space: pre-wrap;">Die </span>****semantische Versionierung****<span style="white-space: pre-wrap;"> ist ein gängiger Standard in der Softwareentwicklung, um Versionsnummern zu vergeben. Sie macht Änderungen im Code nachvollziehbar, erleichtert den Umgang mit Abhängigkeiten und verbessert die Kommunikation über den Entwicklungsstand.</span>

<span style="white-space: pre-wrap;">Weitere Informationen: </span>[semver.org](https://semver.org/)

---

### Was ist die semantische Versionierung?

Die semantische Versionierung beschreibt ein dreiteiliges Versionsschema:

```
MAJOR.MINOR.PATCH
```

- ****MAJOR****: Inkompatible Änderungen der öffentlichen API
- ****MINOR****: Neue, abwärtskompatible Funktionalitäten
- ****PATCH****: Abwärtskompatible Fehlerbehebungen

---

### Beispiele aus der Praxis

- `<span class="editor-theme-code">1.2.3</span>`: Erste stabile Version, zwei kleinere Feature-Erweiterungen, drei Bugfixes
- `<span class="editor-theme-code">2.0.0</span>`: Führt zu inkompatiblen API-Änderungen, z. B. durch Entfernen oder Umbenennen von Funktionen
- `<span class="editor-theme-code">1.3.0</span>`: Fügt neue Funktionalitäten hinzu, ohne vorhandene zu verändern
- `<span class="editor-theme-code">1.3.1</span>`: Behebt einen Fehler aus der Version 1.3.0

---

### Regeln der semantischen Versionierung

1. <span style="white-space: pre-wrap;">Erhöhe die </span>****MAJOR****-Version bei inkompatiblen API-Änderungen
2. <span style="white-space: pre-wrap;">Erhöhe die </span>****MINOR****-Version bei neuen, abwärtskompatiblen Funktionen
3. <span style="white-space: pre-wrap;">Erhöhe die </span>****PATCH****-Version bei abwärtskompatiblen Bugfixes

---

### Vorabversionen und Build-Metadaten

Zusätzlich können Vorabversionen und Build-Metadaten angegeben werden:

```
1.0.0-alpha
1.0.0-beta+exp.sha.5114f85
```

- ****Vorabversionen:****<span style="white-space: pre-wrap;"> </span>`<span class="editor-theme-code">-alpha</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">-beta</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">-rc</span>`<span style="white-space: pre-wrap;"> usw. – für nicht stabile Entwicklungsstände</span>
- ****Build-Metadaten:****<span style="white-space: pre-wrap;"> </span>`<span class="editor-theme-code">+build</span>`<span style="white-space: pre-wrap;"> – zusätzliche Informationen wie Git-Hashes oder Build-Zeitpunkte</span>

---

### Zusammenfassung

- Die semantische Versionierung gibt eine klare Struktur für Versionen vor
- Sie erleichtert das Management von Abhängigkeiten in Projekten
- <span style="white-space: pre-wrap;">Sie wird häufig in Kombination mit </span>[Conventional Commits](https://www.conventionalcommits.org/de/v1.0.0/)<span style="white-space: pre-wrap;"> verwendet</span>