Unter Kontrolle

Versionsverwaltung 2.0 mit GIT

Verteilte Versionsverwaltungssysteme sind im Trend. Git ist gerade bei Open-Source-Projekten in aller Munde. Wir zeigen seine Möglichkeiten.

  1. Versionsverwaltung 2.0 mit GIT
  2. Klone
internet, webdesign, git, open-source, versionsverwaltung

© Internet Magazin

internet, webdesign, git, open-source, versionsverwaltung

Kaum ein Softwareprojekt kommt heute ohne den Einsatz eines Versionsverwaltungssystems (VCS) aus. Je mehr Entwickler an einem Projekt arbeiten oder je größer der Quelltext wird, desto sinnvoller und nützlicher ist der Einsatz eines VCS, wie beispielsweise Subversion, das sich im Laufe der letzten 10 Jahre als Defacto-Standard herauskristallisiert hat.Subversion hat aber seine Ecken und Kanten, die gerade beim Einsatz in großen Projekten zu Tage treten. Ganz anders Git, das von vornherein auf sehr große Projekte ausgelegt wurde. Die Geschichte von Git reicht zurück in das Jahr 2005, als Linus Torvalds ankündigte, für die Linux-Entwicklung ein neues VCS zu verwenden. Das für Linux bis dato verwendete BitKeeper konnte von vielen Kernelentwicklern aus Lizenzgründen nicht mehr eingesetzt werden.Bereits nach wenigen Tagen stand die erste Version von Git zur Verfügung und wurde kurz darauf bereits für die Linux-Entwicklung eingesetzt. Git setzte viele Konzepte um, die so in anderen Versionierungssystemen nicht verfügbar waren und bildet zusammen mit den Konkurrenten Bazaar, Mercurial und Monotone die Gruppe der sogenannten DVCS (Verteilte Versionskontrollsysteme).Git ist in der Programmiersprache C entwickelt und stand lange Zeit nur für Unix- Basierte Systeme zur Verfügung. Mit Msysgit existiert aber mittlerweile eine stabile und schnelle Portierung für Windows. Neben dem Vorzeigeprojekt Linux setzen eine Unmenge weiterer prominenter Open-Source- Projekte auf Git, so auch beispielsweise die beiden PHP-Frameworks Symfony und CodeIgnitor.

Verteilte Versionsverwaltung

Versionsverwaltungssysteme wie Subversion bauen auf ein zentralisiertes Repository zur Ablage aller Quelltexte und Versionsinformationen. Jeder Entwickler lädt sich einen bestimmten Stand zu sich auf den Rechner (checkout). Diese Arbeitskopie enthält alle Daten einer bestimmten Version, im Normalfall der jeweils aktuellsten.Nach getaner Arbeit wird dieser wieder in das zentrale Repository geschrieben (checkin). Um Änderungen anderer Entwickler in die lokale Arbeitskopie einzupflegen, genügt das Ausführen des Update-Befehls. Soweit so gut. Der Nachteil an Subversion ist, dass für nahezu alle angebotenen Operationen eine Verbindung zum zentralen Repository (Server) notwendig ist.

Internet, webdesign, git, open-source, versionsverwaltung

© Internet Magazin

Git ist das im Moment wohl populärste verteilte Versionsverwaltungssystem.

Ohne Serververbindung können somit die meisten Operationen nicht durchgeführt werden. Der zweite Nachteil resultiert ebenfalls aus dem Problem, dass das Repository auf einem entfernten Server platziert ist, jeder Befehl wird über das Netzwerk ausgeführt, was gerade bei größeren Projekten zu langen Wartezeiten führen kann.Die Entwicklung mit verteilten VCS gestaltet sich ein wenig anders. Entwickler laden sich in diesem Falle nicht eine Arbeitskopie eines bestimmten Versionsstands, sondern eine komplette Kopie des gesamten Repositories. Was sich auf den ersten Blick nach Platzverschwendung anhört, bringt sehr viele Vorteile im Entwickleralltag mit sich. Jede Operation kann direkt im lokalen System durchgeführt werden und geht dementsprechend ohne Netzwerkverbindung vonstatten, was entsprechend schnell ist. Selbstverständlich können Änderungen trotzdem an einen zentralen Server übertragen werden.

Kommandozeile

Git besteht aus einer Vielzahl von Einzelbefehlen. Mit jeder Version kommen neue Befehle hinzu. Hinter jedem dieser Befehle steckt ein eigenes ablauffähiges Programm, das über das Kommandozeilen-Werkzeug Git gestartet wird. Viele Entwickler nutzen die GIT-Kommandozeilenwerkzeuge, da diese einfach und komfortabel nutzbar sind und bei Bedarf die volle Kontrolle über die auszuführenden Operationen bieten. Auch in den meisten Tutorials im Netz kommen sie zum Einsatz.

Grafische Benutzeroberfläche

Wem die Arbeit mit den Kommandozeilenprogrammen nicht eingängig genug ist, der kann auf verschiedene grafische Benutzeroberflächen zurückgreifen. Wer unter Windows entwickelt, der kann beispielsweise Tortoisegit (code.google.com/p/tortoisegit ) nutzen, das sich in den Windows Explorer integriert oder den Standalone-Client Smartgit (www.syntevo.com/smartgit/index.html ).Auch für OSX existiert mit GitX (gitx.frim.nl/ ) ein Client. Eine umfangreiche Liste an Tools für Linux finden Sie unter https://git.wiki.kernel.org/index.php/Interfaces-FrontendsAndTools . Viele Entwicklungsumgebungen unterstützen das VCS ebenfalls. Sowohl für Eclipse, Netbeans, Dreamweaver oder IntelliJ existiert Git-Support, der entweder direkt in der IDE integriert ist oder per Plugin nachgerüstet werden kann.

Arbeiten mit Git

Wie bereits zu Beginn des Artikels erwähnt, benötigen Sie nicht zwingend ein zentrales Repository, um mit Git zu arbeiten. Sie können auch rein lokal damit arbeiten. Um ein Verzeichnis unter Git-Versionskontrolle zu stellen genügt die Ausführung des folgenden Befehls innerhalb des Verzeichnisses:

$> git init

Damit ist der erste Schritt getan. Innerhalb des gewählten Verzeichnisses wurde ein neuer Unterordner Namens .git eingefügt. In ihm sind alle Versionsinformationen enthalten. Anders als Subversion verstreut Git diese Informationen nicht in jedem Unterverzeichnis, sondern bündelt alle Daten in diesem Ordner. Um Dateien und Verzeichnisse in das Git-Repository aufzunehmen, werden diese mit git add hinzugefügt.Dabei können Sie entweder eine einzelne Datei oder ein Verzeichnis gezielt aufnehmen, indem Sie den Namen angeben oder einfach alle Dateien, die noch nicht unter Versionskontrolle stehen, hinzufügen. Das folgende Beispiel zeigt beide Varianten

$> git add README.TXT $> git add .

In jedem Projekt gibt es Dateien, die nicht unter Versionskontrolle gestellt werden sollen. Meist handelt es sich dabei um temporäre, Cache-, Projekt- oder Konfigurationsdateien beziehungsweise -verzeichnisse. Diese können mit einer einzigen Git-Datei definiert werden. Die Datei hat den Namen .gitignore und wird im Wurzelverzeichnis des Repositories abgelegt. Innerhalb der Datei können Sie mit Regulären Ausdrücken die zu ignorierenden Dateien definieren. Das folgende Listing zeigt ein Beispiel:

cache/* log/* nbproject web/web.config

Das Löschen von Dateien funktioniert ebenfalls per Kommandozeile. Auch hier gibt es zwei Möglichkeiten. Mit dem Befehl git rm können einzelne Dateien aus dem Repository gelöscht werden. Die eigentliche Datei bleibt aber im jeweiligen Verzeichnis erhalten.

$> git rm README.TXT

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".