Versionskontrolle
Completion requirements
Software-Entwickler, die ohne Werkzeuge zur Versionskontrolle arbeiten, sehen sich stets mit den gleichen wiederkehrenden Schwierigkeiten konfrontiert, da sie die Software im normalen Dateisystem vorhalten müssen. Da sind z.B. folgende Probleme:
- Sie vergessen oft, welche Version gerade produktiv im Einsatz ist, da Unterordner des Programmcodes mit Endungen wie z.B. "final", "aktuell" oder "neu" usw. gekennzeichnet sind.
- Oft wurden mehrere Veränderungen vorgenommen, die sich als inkompatibel herausstellen und korrigiert werden müssen. Nun wird in alten Ordnern nach noch funktionierenden Programmteilen gesucht, die noch funktionieren.
- Der aktuelle Programmcode wird durch etliche alte auskommentierte Code-Blocks aufgebläht, weil man sich nicht traut, diesen Code endgültig zu löschen.
- Programmieren im Team wird erschwert, weil die jeweiligen lokalen Ordner manuell synchronisiert werden müssen. Auch ist das manuelle Zusammenführen der jeweiligen Programmierarbeiten sehr fehlerträchtig.
Die Verwendung von Versionskontrollwerkzeugen hat dagegen folgende Vorteile:
- Der Verlauf aller Code-Änderungen für jede Programmdatei, die von vielen Personen im Laufe der Jahre vorgenommen wurden, bleibt bei Bedarf gespeichert. Das umfasst neben den Änderungen auch die Erstellung, das Umbenennen und Löschung der Dateien.
Dabei werden der jeweilige Zeitpunkt und Autor und dessen Kommentar der Änderungen mit erfasst. - Wenn der vollständige Verlauf verfügbar ist, kann leicht zu früheren Versionen zurückgekehrt werden, um z.B. Bugs zu finden, die in noch produktiv laufenden älteren Software-Versionen beseitigt werden müssen oder wenn sich aktuelle Programmänderungen als nutzlos erweisen.
- Es kann simultan an mehreren Programmversionen gearbeitet werden, weil man diese verzweigen kann (Branching). So können beispielsweise in einem Develop-Branch neue Features realisiert werden und unabhängig davon ein Bugfix im produktiven Main-Branch gefixt werden.
- Zwei verschiedene Programmversionen können nach Abschluss der Arbeiten zusammengeführt werden (Merging). Das Versionskontrollwerkzeug kontrolliert dabei, ob sich die jeweiligen Änderungen überschneiden, das heißt, die gleiche Datei und den gleichen Codeabschnitt betreffen. Im Falle eines Konflikts werden die Entwickler darauf hingewiesen, so dass sie diesen Konflikt programmatisch lösen können.

Branching und Merging - Mit verteilten Versionskontrollwerkzeugen kann man das eigenen lokale Versionierungssystem mit einem anderen z.B. auf einem Server leicht synchron halten. Entwickler können sich den aktuellen Projektstand vom zentralen Server herunterladen (Pulling) und eigene Updates hochladen (Pushing).
Last modified: Thursday, 16 September 2021, 1:06 PM