Was ist Versionsverwaltung?

Versionsverwaltungssysteme (version control system, VCS) oder Quellcodeverwaltungssysteme (source code management, SCM) ermöglichen es Ihnen, jede Änderung in Ihrem Codebestand nachzuverfolgen.

Indem Sie Ihre Dateien in einem Versionsverwaltungssystem speichern, können Sie jede Änderung, Ergänzung oder Löschung nachvollziehen – inklusive der Information, wann und von wem diese vorgenommen wurde.

Sie können auch zu einem früheren Zustand zurückkehren und Änderungen vergleichen, die im Lauf der Zeit an einer Datei vorgenommen wurden. Die Versionsverwaltung ist ein unverzichtbares Tool für die moderne Softwareentwicklung. Sie bietet nicht nur allen Beteiligten einen Einblick in die vorgenommenen Änderungen, sondern ermöglicht auch die Bearbeitung derselben Dateien durch mehrere Personen sowie die Zusammenführung dieser Änderungen. Dadurch wird die Verwaltung von Versionen und Releases vereinfacht.

Es gibt zwei Hauptkategorien von Versionsverwaltungssystemen: verteilt und zentralisiert. In einem zentralisierten System werden alle Dateien auf einem zentralen Server gespeichert. Die einzelnen Benutzer*innen laden sich eine lokale Kopie der Dateien herunter („Auschecken“), um sie später wieder mit dem zentralen Datenspeicher (als „Source of Truth“, d. h. maßgebliche Datenquelle) zu synchronisieren.

Der Hauptnachteil dieses Ansatzes besteht darin, dass der zentrale Server einen sogenannten Single Point of Failure (einzelne Fehlerstelle) darstellt. Im Gegensatz dazu gibt es in einem verteilten Versionsverwaltungssystem mehrere Kopien der Dateien und damit mehrere maßgebliche Datenquellen.

Unabhängig davon, welches System Sie verwenden, sind die grundlegenden Schritte gleich: Aktualisieren Ihrer lokalen Kopie der Quelldateien, Vornehmen von lokalen Änderungen und anschließend Teilen dieser Änderungen mit anderen in Form eines Commits.

Das Speichern aller Dateien, die zur Erstellung Ihrer Anwendung notwendig sind, in einem einzigen Versionsverwaltungs-Repository, auf das jeder zugreifen kann, ist der erste Schritt zur Umsetzung von Continuous Integration und dem Aufbau einer CI/CD-Pipeline.

Dadurch können alle Mitwirkenden ihre Änderungen regelmäßig hochladen und so den automatisierten Build- und Testprozess auslösen, um schnelles Feedback zu ihren Änderungen zu erhalten.

Wenn beim Testen oder in der Produktion Probleme auftreten, können Sie die Commits identifizieren, die das Problem verursacht haben, und anhand des Versionsverlaufs genau nachvollziehen, was geändert wurde.