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

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden Ergebnissen…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste einspannen.…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…