Was ist Versionskontrolle?
Versionskontrolle ist ein unverzichtbares Werkzeug bei der Softwareentwicklung. Die Versionskontrolle organisiert und strukturiert dabei die geregelte Zusammenarbeit bei der Entwicklung von Software. Versionskontrolle ist nicht nur in der Programmierung relevant, sondern vielmehr Teil einer jeden strukturierten Vorgehensweise für professionelle Dateiverwaltung und spielt daher in der Softwareentwicklung in Form eines perfekt im Entwickler-Team abgestimmten Entwicklungszyklus und gut dokumentierter Softwarearchitekturen eine besondere Rolle.
Die Versionskontrolle mit Git und Subversion
Git und Subversion sind die beiden bekanntesten Vertreter der Versionskontrolle. Versionskontrolle ist via Syntax Befehlen über die Kommandozeile als auch über eine grafische Oberfläche möglich. GitHub und GitLab sind die beliebtesten Anwendungen der Git-Variante.
Warum Versionskontrolle?
Eine Versionskontrolle erleichtert die Zusammenarbeit eines Entwicklers mit anderen Entwicklern im Team erheblich. Aber auch bei einfachen Anwendungsfällen wie der gemeinsamen Zusammenarbeit an derselben Datei ist eine Versionskontrolle sinnvoll, effektiv und äußert hilfreich.
Versionskontrolle ermöglicht konfliktfreies Arbeiten in agilen Teams
Sobald mehr als ein Benutzer – gleich ob in der Rolle eines einfachen Benutzers oder eines Entwicklers – an derselben Datei arbeiten ist eine Versionskontrolle erforderlich die Zugangsberechtigungen regelt.
Das Versionskontrollsystem regelt gleichzeitige Zugriffe
Der gleichzeitige Zugriff auf dieselbe Datei ist über einen geteilten Ordner möglich, wobei dieser Ordner Teil eines regulären Verzeichnissystems auf einem lokalen Server oder Ordner in der Cloud auf einem Webserver ist. Der Zugriff auf einzelne Dateien innerhalb des Ordners geschieht für jeden beteiligten Nutzer durch Kopien der angefragten Dateien. Bei gleichzeitiger Bearbeitung der Dateien durch unterschiedliche Nutzer ist ein Kontrollmechanismus erforderlich der sicherstellt, dass nicht die zuletzt hochgeladene Datei eine möglicherweise aktuellere Version überschreibt. Das Grundprinzip des Lockings stellt zwar sicher, dass aktuell in Bearbeitung befindliche Dateien nicht unbeabsichtigt durch andere Nutzer überschrieben werden können. Effizient ist aber auch das alleinige Locking einer Datei nicht. Vielmehr erzeugt eine Versionskontrolle zusätzlich für veränderte Dateien durch protokollierte Änderungsdaten in einer Änderungsdatei ein Versionskontrollsystem. Im Fall von parallelen Änderungen desselben Dokuments stellt die Versionskontrolle sicher, dass die Änderungen von mehreren Anwendern in einer Datei zusammengeführt werden.
Professionelle Versionskontrolle ist unverzichtbar
Insbesondere die Zusammenführung von Änderungen macht die Versionskontrolle so vorteilhaft wie unverzichtbar. Da in jedem Unternehmen zahlreiche Dokumente und Dateien permanent in paralleler Bearbeitung sind ist eine professionelle Versionskontrolle heutzutage unverzichtbar.
Anwendungsfälle von Versionskontrollsystemen
Von einfachen Textdokumenten bis hin zu komplexem Source-Code in Programmdateien oder Konfigurationsdateien von Servern oder anderen Anwendungen, jeder dieser Anwendungsfälle profitiert vom Mechanismus der Versionskontrolle. Binärdateien wie Grafiken oder Archivdateien können hingegen nicht mit Versionskontrollsystemen verwaltet werden, da Änderungen mit den eingesetzten Mechanismen hier nicht einfach nachvollziehbar sind.
Versionskontrolle für Office Dateien in Unternehmen
Auch Office-Dateien wie oder Excel-Tabellen und Word Dokumenten fallen in die Kategorie der Binärdokumente und sind nur in verschiedenen Versionen vorhaltbar, können aber nicht automatisch in eine gemeinsame Version zusammengeführt werden; dies wird am Beispiel einer Bilddatei am leichtestens verständlich. Für Office Dateien gibt es mit Microsoft Sharepoint oder dem Clouddienst OneDrive für das Unternehmensumfeld eigene Versionskontrollsysteme.
Unterstützt wird die Organisation eines Versionskontrollmechanismus über den Versionscode einer Datei und die Metadaten innerhalb von Dateien.