Versionsverwaltungssysteme
Aufgaben
Die Versionsverwaltung umfasst folgende Aufgaben:
- Die Ănderungen protokollieren, um nachzuvollziehen, wer wann etwas an der Software geĂ€ndert hat.
- Die StĂ€nde einzelner Dateien wiederherstellen, um versehentliche Ănderungen aufzuheben.
- Die einzelne StÀnde eines Projekts archivieren, um allzeit auf alle Versionen zugreifen zu können.
- Den gemeinsamen Zugriff von mehreren Entwicklern auf eine Datei koordinieren.
- Die Entwicklung mehrere Entwicklungszweige eines Projektes gleichzeitig zu ermöglichen.
Begriffe
Im Zusammenhang mit Versionsverwaltung-Tools werden immer wiederkehrende Begriffe verwendet, die im Folgenden erklÀrt werden sollen.
Branch
Branch bedeutet auf Deutsch Zweig und definiert die Verzweigung zu einer neuen Version des Projekts, welche es ermöglicht, dass unterschiedlichen Versionen parallel weiterentwickelt werden können.
Merging
Merging bedeutet verschmelzen. Merging wird der Vorgang genannt, der geschieht, wenn vorgenommen Ănderungen an einem Branch in einen anderen einflieĂen.
Trunk, Master
Ein Hauptentwicklungszweig wird hÀufig als Trunk oder Master bezeichnet.
Fork
Wenn ein Branch in einen neuen, unabhÀngigen Versionsverwaltung erstellt wird, ist dies ein Fork.
Repository
Ein Repository, verkĂŒrzt auch Repo genannt, bedeutet auf Deutsch BehĂ€lter bzw. Aufbewahrungsort und beschreibt innerhalb der Versionsverwaltung das Projekt in dem die entsprechenden Dateien abgelegt sind.
Commit
Wenn eine neue Version eines Branches bei der Versionsverwaltung vorgelegt wird, wird dieser Vorgang als Commit beschrieben. Der Entwickler hat einen Programmierung an einer Software fertiggestellt und âcommittedâ (ĂŒbergibt) seine Ănderungen.
Funktionsweise
Damit jeder Entwickler mit den im Repository abgelegten Dateien arbeiten kann, kann er durch das Versionsverwaltung-Tool auf den aktuellen Stand des Projekts zugreifen. Dieser wird durch einen Verzeichnisbaum bzw. durch eine Arbeitskopie abgebildet, der aus den Daten erstellt werden kann.
In einem Versionsverwaltungssystem werden diese Arbeitskopien dann mit den vorhandenen Daten im Repository synchronisiert.
Die Arbeitskopie und das Repository bedingen sich gegenseitig. So ist es möglich, dass Versionen aus dem Repository in die Arbeitskopie ĂŒbertragen werden (Checkout) oder Versionen aus der Arbeitskopie ins Repository ĂŒberfĂŒhrt werden (Commit).
Arbeitsweisen
In Versionsverwaltungssystemen kann auf unterschiedliche Weisen an Projekten gearbeitet werden:
Lock Modify Write
Diese Arbeitsweise wird auch Lock Modify Unlock genannt. Ihre Basis findet Lock Modify Write in der pessimistischen Versionsverwaltung.
Vor einer Ănderung durch den Anwender mĂŒssen die zu bearbeitenden Dateien gesperrt und nach der Ănderung wieder zugĂ€nglich gemacht werden. WĂ€hrend der Sperrung der Daten, können keine anderen Benutzer Ănderungen daran vornehmen.
Der Vorteil liegt darin, dass das ZusammenfĂŒhren der einzelnen Versionen ausbleibt, da nur ein Benutzer an einer Datei arbeiten und sie Ă€ndern kann.
Nachteilig ist daran, dass es vorkommen kann, auf die Freigabe eines Dokuments zu warten, um Ănderungen auszufĂŒhren.
Copy Modify Merge
Um die Nachteile der pessimistischen Versionsverwaltung auszugleichen, wurde die optimistische Versionsverwaltung mit der Arbeitsweise des Copy Modify Merge konzipiert.
Durch dieses Konzept ist es möglich, eine Datei gleichzeitig durch mehrere Benutzer zu Ă€ndern. Im Anschluss daran findet ein automatisches oder manuelles Merging (ZusammenfĂŒhrung) der Versionen statt.
Ein Vorteil bietet diese Arbeitsweise vor allem in puncto Effizienz. Die geplanten Ănderungen mĂŒssen nicht im Voraus bekannt gegeben werden. Der direkte Kontakt zwischen den Entwicklern entfĂ€llt.
BinĂ€rdaten, also Dateien, die keine Textdateien darstellen, sondern aus beliebigen Bitmustern (festgelegte Zuordnung zu einem Zeichen oder einer Zeichenfolge) bestehen, können nur mit dem passenden Werkzeug automatisch zusammengefĂŒhrt werden. FĂŒr das Konzept Copy Modify Merge stellt dieser Umstand in einigen FĂ€llen einen Nachteil dar.
Arten der Versionsverwaltung
Es bestehen drei Arten der Versionsverwaltung:
Lokale Versionsverwaltung
Die lokale Versionsverwaltung findet lokal auf einem Computer statt. Dabei wird hÀufig nur eine einzige Datei versioniert und verwaltet.
Zentrale Versionsverwaltung
Diese Art der Versionsverwaltung funktioniert mithilfe eines zentralen Archivs in Form eine Client-Server-Systems. In diesem System werden Aufgaben und Dienstleistungen innerhalb eines Netzwerkes verteilt und von Programmen ausgefĂŒhrt, die Clients und Server darstellen können. Der Client fordert einen Dienst vom Server an. Der Server, dessen Standort auf demselben oder einem anderen Rechner im Netzwerk ist, antwortet auf die Anfrage des Client. Der Server ist in der Lage, auf mehrere Anfragen von mehreren Clients zu antworten.
Ăber Netzwerke kann auf ein Repository zugegriffen werden. Nur berechtigten Personen ist es gestattet, neue Versionen in das Archiv zu legen.
Verteilte Versionsverwaltung
In der verteilten Versionsverwaltung besteht der Unterschied zum lokalen und zentralen System darin, dass kein zentrales Repository mehr vorhanden ist. Jeder Entwickler, der an einem Projekt arbeitet, besitzt dafĂŒr sein eigenes Repository und kann dies mit allen beliebig anderen anpassen.
Die Ănderungen können lokal nachvollzogen werden, ohne dass dabei eine Verbindung zum Server hergestellt werden muss.
Beispiele Versionsverwaltung-Tools
MediaWiki
Ein Beispiel fĂŒr ein zentrales System, welches auf der Grundlage von Open Source vertrieben wird, ist MediaWiki.
MediaWiki ist frei verfĂŒgbar und fĂŒr Inhalte konzipiert, die in Form eines Wiki-Systems dargestellt werden. Jeder Benutzer kann die Inhalte ĂŒber den Browser (Computerprogramme zur Darstellung von Webseiten) Ă€ndern.
MediaWiki wurde fĂŒr Wikipedia entwickelt und steht unter der GPL-Lizenz. MediaWiki kann somit von Nutzern ausgefĂŒhrt und von Entwicklern durch die Offenlegung des Quelltextes verĂ€ndert und verbreitet werden. Neben Wikipedia und weiteren MediaWiki-Projekten, nutzen zahlreiche Organisationen, Unternehmen und Institutionen MediaWiki.
Entstanden ist MediaWiki aus einer Wiki-Engine. Die Engine ist ein Teil eines Computerprogramms, welcher eigenstĂ€ndig fĂŒr Berechnungen oder Simulationen zustĂ€ndig ist. Sie lĂ€uft meist im Hintergrund und muss nicht gesteuert werden.
Die erste Version, die von Magnus Manske entwickelt wurde, fand im Januar 2002 erstmals Anwendung. Im Juli 2003 wurde sie final als MediaWiki bezeichnet.
Apache Subversion
Auch Apache Subversion gilt als ein zentrales Versionsverwaltungssystem. In einem zentralen Projektarchiv finden die Versionierungen statt.
An der Namensgebung des Versionsverwaltungssystems war vor allem der Software-Entwickler Jim Blandy beteiligt. Subversion bedeutet ins Deutsche ĂŒbersetzt so viel wie Unterversion oder frĂŒhere Version.
ZunÀchst wurde das System seit Beginn des Jahres 2000 bei einer Softwarefirma namens CollabNet entwickelt und wechselte im Jahre 2009 zur Apache Software Foundation.
Apache Subversion ist eine freie Software. Das bedeutet, dass die Nutzer ebenfalls die Nutzungsrechte der Anwendung erhalten und diese in keiner Weise beschrÀnkt werden.
Git
Ein Beispiel fĂŒr ein verteiltes Versionsverwaltungs-Tool ist Git, welches von Linus Torvalds initiiert wurde. Er gilt als Entwickler der Open Source Software Linux und begann im April 2005 eine neue Versionsverwaltung zu entwickeln. Sie sollte das System BitKeeper ersetzen, welches durch eine LizenzĂ€nderung von Entwicklern nicht mehr kostenlos verwendet werden konnte.
Der Name Git wird in England als ein umgangssprachlicher Ausdruck fĂŒr âBlödmannâ genutzt und unter anderem deshalb von Torvalds gewĂ€hlt, weil er in der Softwarewelt noch ungenutzt war.
Git ist an der Entwicklung vieler Projekte beteiligt, die kommerziell sind, aber dem Open Source Bereich zugeschrieben werden können.
Git wird zum Beispiel auf Plattformen wie GitHub und GitLab eingesetzt.
GitHub ist eine Webanwendung fĂŒr die Versionierung von Software-Entwicklungsprojekten. Es wurde von den Programmierern Wanstrath, Hyett, Chacon und Preston-Werner entwickelt und startete im Februar 2008.
Auf GitHub werden nicht die Projekte und deren Quellcodes in den Vordergrund gestellt, sondern die Nutzer und ihre Repositories. Das Erstellen von öffentlichen und privaten Repositories ist möglich, nachdem eine kostenlose Registrierung erfolgt.
GitLab leitete sich bezĂŒglich der Namensgebung ebenfalls von Git ab und ist so wie GitHub eine netzbasierte Anwendung fĂŒr Software-Projekte. Die Entwicklung erfolgte 2011 durch die Ukrainer Saparoschez und Sizov unter Verwendung der Programmiersprache Ruby on Rails.
Fossil
Ein weiteres verteiltes System zur Versionsverwaltung stellt Fossil dar. Es wurde vornehmlich von dem Programmierer Richard Hipp entwickelt und erschien im Jahre 2006 auf dem Markt. Die Namensgebung verdeutlicht ein Hauptmerkmal das Systems, indem alle Ănderungen, die an Software unternommen wurden, fĂŒr immer rekonstruierbar sein sollen.
Es enthĂ€lt Funktionen wie ein integriertes Wiki, ein integriertes Forum und einen integrierten Bugtracker fĂŒr die Programmfehlererfassung.
TenMedia - Softwareagentur im Herzen von Berlin
TenMedia besteht seit 2011 und arbeitet seitdem an der technischen Entwicklung von Websites, Apps und Datenbanken. Mit modernsten Technologien entwickeln wir state-of-the-art Produkte und tragen so einen Teil zur digitalen Transformation in Deutschland bei. AuĂerdem bieten wir weitere Dienstleistungen wie Webdesign, Hosting und Wartung an und betreuen und managen Portale.
FĂŒr kleine und mittelstĂ€ndische Unternehmen, aber auch fĂŒr Start-ups können wir eine langfristige Zusammenarbeit anbieten.
Sie haben eine spannende Idee? Es fehlt Ihnen jedoch die passende Umsetzung? Rufen Sie uns gerne an oder schreiben Sie uns eine Mail.