Softwareentwicklung
Versionsverwaltung
Eine Versionsverwaltung oder ein Versionskontrollsystem (engl.: version control system, kurz: VCS) ist eine Software zur Nachverfolgung von Änderung an Dateien über die Zeit. Häufig wird es für Quellcode verwendet. Bekannte Lösungen sind unter anderem SVN, Git oder Perforce Helix.
Inhaltsverzeichnis
Arten von VCS
Es wird vor allem in zentrale und verteilte Versionsverwaltungen unterschieden.
Zentrale Versionsverwaltung
Dieser Ansatz benötigt immer einen Server. Über den VCS Client können Dateien auf das eigene System kopiert werden. Nachdem die Änderungen vorgenommen wurden, wird die Änderung auf den Server zurück kopiert. Dieser Ansatz wird von Perforce Helix genutzt.
Verteilte Versionsverwaltung
Jeder Nutzer der Versionsverwaltung besitzt eine vollständige Kopie auf seinem Computer und kann damit ersteinmal losgelöst von den anderen Nutzern arbeiten. Zur Zusammenarbeit im Team wird dann ein Server genutzt, welcher ebenfalls eine vollständige Kopie des Repositories speichert. Um eine Änderung allen im Team zur Verfügung zu stellen, wird über die Versionsverwaltung die Historie bis zum aktuellen Zeitpunkt auf den Server kopiert. Bekannte Anbieter für das Hosting von Git-Repositories sind GitHub, GitLab und Bitbucket.
Hintergrund
Bei der Softwareentwicklung wird der Quellcode stetig geändert. Sei es nur eine Zeile oder hunderte von Dateien. Zur Nachverfolgung der Änderungen und dem Austausch der Stände in einem Team wird heutzutage ein VCS verwendet.
Es gibt auch Wege ohne eine VCS auszukommen, dies ist teilweise jedoch mühselig und nicht so gut in der Erfassung der Historie. Beispielsweise könnte regelmäßig eine Kopie aller Dateien des Projektes erstellt werden.
Schwierigkeiten treten oft bei der Zusammenarbeit im Team auf. Die Zusammenführung von Änderungen eines Kollegen erfordert den Abgleich jeder Datei mit dem eigenen lokalen Stand. Den Zeitpunkt zu finden, wann sich ein Fehler eingeschlichen hat, erfordert alle historischen Stände zu durchsuchen bis die entsprechende Stelle sich ändert. Ein VCS übernimmt bzw. vereinfacht den Großteil dieser Aufgaben.