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.
Versionsverwaltungssysteme
© Armin Rimoldi
Teilen

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.

Bleibe auf dem Laufenden in Sachen Software, IT und Start-ups mit unserem Newsletter.
Jetzt abonnieren!
Bleibe auf dem Laufenden in Sachen Software, IT und Start-ups mit unserem Newsletter.
Jetzt abonnieren!
Gefällt dir was du siehst? Teile es!
Kontaktperson
Anica Piontek
+49 (0) 30 5 490 650-0
anica.piontek@tenmedia.de
Du hast auch ein spannendes Projekt?
Gerne bespreche ich ganz unverbindlich alle Projektdetails in einem persönlichen Gespräch.

Zufällige Beiträge

Menschen schauen gemeinsam auf einen PC am Schreibtsich Glossar > Services
Zwei Männer und eine Frau planen an einem Tisch Softwareentwicklung Glossar > Services
Blinder Mann auf Parkbank streichelt Hund und nutzt mobil barrierefreie Webseite Glossar > Begriffe

Zufällige Glossareinträge

Menschen schauen gemeinsam auf einen PC am Schreibtsich Glossar > Services
Junger Mann mit Bart sieht erstaunt auf sein Notebook. Glossar > Begriffe