Versionsverwaltungssysteme

Offene Quellcodes von Open Source Software, die hĂ€ufig von vielen Menschen modifiziert werden, benötigen eine Verwaltung. DafĂŒr werden Versionsverwaltungssysteme eingesetzt, die administrative Aufgaben ĂŒbernehmen und Änderungen im Quellcode bei der Softwareentwicklung speichern.
Mann in einem braunen Mantel steht mit einem PC an einem GelÀnder
© Armin Rimoldi

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.