Versionsverwaltung mit Git
Das neue Buch „Versionsverwaltung mit Git“ von Sujeevan Vijayakumaran bietet auf knapp über 250 Seiten einen Praxiseinstieg in die beliebte Versionsverwaltung. Ich habe mir das Buch näher angesehen und basieren auf den eigenen Erfahrungen und der meiner Kollegen auf die Verwendbarkeit in der Praxis getestet. Der mitp Verlag hat mir freundlicherweise das Buch zur Verfügung gestellt, ihr könnt das Buch im mitp Shop kaufen.
Versionsverwaltung mit Git
Git ist vielen Menschen im näheren IT Umfeld ein Begriff, nur wenige wissen aber wie es wirklich funktioniert. Das Buch beginnt in der Einleitung mit einem Bild, das ich euch auch zeigen muss. Der Sketch sagt mehr aus als tausend Worte. Ich kann euch versichern, dass in vielen Firmen genau das passiert. Bei uns bin ich der Git Experte, der im Fehlerfall eingreifen muss und das Git Repository rettet. Sehen wir uns an ob das Buch praxistauglich ist…
Kapitel im Detail
Das Buch ist in 10 Kapitel unterteilt die insgesamt 250 Seiten im Buch füllen. Die ersten vier geben die Grundlagen von Git wieder, die restlichen sechs behandeln weiterführende Techniken. So wie in der Zeichnung links zu sehen haben die meisten Anwender von Git nur ein rudimentäres Verständnis wie Git funktioniert. Zumindest die nötigen Kommandos um damit zu arbeiten sind geläufig. Ich habe mich selbst als fortgeschritten eingeschätzt. Nachdem ich jedoch die vier Anfängerkapitel durchgearbeitet habe bin ich um einiges schlauer. Ich war ganz erstaunt als Linux Freak zu lernen, dass Git auf Linus Torvalds zurück geht. Da die Versionierungssoftware die beim Linux Kernel 2005 eingesetzt wurde eine kommerzielle Lizenz bekam begannen die Entwickler, allen voran Torvalds mit der Open Source Implementierung einer eigenen Versionsverwaltung – die Geburtsstunde von Git. Heute ist Git ein Quasi-Standard und in der Mehrzahl aller Softwareprojekten eingesetzt.
Grundlagenkapitel
Die Grundlagenkapitel behandeln die Arbeit mit Git auf der Kommandozeile und alle Befehle die man dafür benötigt. Dazu zählen folgende Themen:
- wie man Git installiert
- wie man ein Git Repository erstellt
- commit, status, add
- was branches und merges sind und wie man lokal auf einem eigenen Repository arbeitet
- wie man im Team auf verteilten Repositories arbeitet
- was die Befehle clone, remote, fetch und push machen
Nach diesen Kapitel sollte jeder Leser in der Lage sein an einem unter Git versionierten Projekt mitzuarbeiten. Dabei hat man sogar schon tiefer gehende Kenntnisse über Konflikte beim Zusammenführen von Branches und sollte diese sogar lesen können. Die Grundlagen sind Pflichtlektüre für jeden Mitarbeiter. Die Informationen kann man sich auch aus der Dokumentation oder der Hilfe von Git herauslesen, im Buch sind die knapp 100 Seiten leserlich aufbereitet und vor allem die Praxisbeispiele kann man selbst ohne großen Aufwand mitmachen. Damit versteht man die Theorie deutlich einfacher.
Kapitel für Fortgeschrittene
Hosting
Die Kapitel für Fortgeschrittene beginnen mit dem Hosting von Git Projekten. Allen voran ist das GitHub, es werden aber auch andere Lösungen für das lokale Netzwerk beschrieben. Das sind GitLab und gitolite. Es geht dem Autor vor allem darum, dass der Leser die Arbeitsweise dahinter versteht. Man benötigt Wissen über Administration, zum Beispiel was SSH Keys sind und warum man diese benötigt.
Besonders interessant ist meiner Meinung nach der Abschnitt zu den CI Tools (Continuous Integration) wie Jenkins, Travic-CI oder GitLab-Ci. Mit diesen Werkzeugen kann man automatisierte Tasks anlegen wie das Testen oder Builden des Quellcodes eines Repository. Dadurch erreicht man ein automatisches Feedback ob der Code korrekt compiliert werden kann oder bestimmte Unit Tests besteht.
Workflows
Dieses Kapitel versucht anhand einer Ausgangssituation den best möglichen Workflow zu finden. Dabei macht es einen unterschied ob eine oder mehrere Person am Git Projekt arbeiten und wie die Struktur der Repositories aussieht. Je nach Komplexität muss man bestimmte Workflows fix definieren. Zum Beispiel ob mitarbeiter für Features einen eigenen Feature branch anlegen müssen, was ein Hotflix branch ist und wie man Versionen taggen kann. Interessant ist in diesem Zusammenhang auch die Integration von Git Hostings. Dort kann man beispielsweise einstellen, dass ein branch erst gemerged werden kann, wenn eine bestimmte Anzahl an Mitarbeitern diesem merge zustimmen.
Hooks
In einem kurzen Kapitel lernt man noch mit client- und serverseitigen Hooks umzugehen. Damit kann man bestimmte Fehlermeldungen vor einem Commit erzwingen und bestimmte Guidelines für die Codequalität umsetzen.
Umstieg von Subversion
Git hat in den letzten Jahren das bis dahin dominante Versionsverwaltungstool Subversion abgelöst. Das Kapitel behandelt die Unterschiede und die Migration von svn zu git.
Tipps und Tricks
Im vorletzten Kapitel werden noch einige Themen beschrieben die sehr ins Detail gehen. Beispielsweise kann man über den Log sehr gut Informationen herauslesen. Beispielsweise wann welcher Mitarbeiter welche Änderungen gemacht hat. Das ist insbesondere Sinnvoll, wenn man bei einem Fehler den zuletzt funktionierenden commit finden will. Das geht mit bisect. Interessant ist auch wie man mit diff ein patch File erstellt um eine Software auf die aktuelle Version zu patchen.
Grafische Clients
Das letzte Kapitel listet noch die bekanntesten grafischen Git Client Programme auf. Dabei wird näher darauf eingegangen auf welchem Betriebssystemen diese funktionieren, ob diese Open Source oder kommerziell sind und welche Vor- und Nachteile diese haben.
GUIs
Das Kapitel in dem Git GUIs und Server Software vorgestellt werden ist sehr praxisnah gehalten. Viele Open Source Projekte liegen auf GitHub, das vor allem durch den leichten Umgang mit der Versionsverwaltung und des perfekten Webinterface so beliebt ist. Die Vorstellung von GitLab als GitHub „Konkurrenz“ hat mich überzeugt auch die Projekte bei mir in der Arbeit dort als Repositories anzulegen und meinen Kollegen dort Accounts mit unterschiedlichen Benutzerberechtigungen anzulegen. Die Enterprise Version ist dabei für eine kleine bis mittelständige Firma optimal nutzbar und von den Kosten tragbar.
Gerade im dynamischen Umfeld mit mehreren Mitarbeitern die auf unterschiedlicher Hardware und Software arbeiten war das Kapitel zu den Git GUIs sehr gut. So konnten sich alle Kollegen ihr Tool heraussuchen, egal ob Mac OSX, Windows oder gar Linux am Desktop Rechner läuft.
Lesbarkeit
Das Buch vermittelt sehr viel Theorie, ist aber keineswegs trocken. Der Autor schafft es sehr gut die theoretischen Passagen mit praxisnahen Beispielen und einer gut leserlichen Sprache aufzulockern. In Situationen in denen ein bestimmter Workflow oder ein bestimmtes GUI Programm fast schon Standard wäre erklärt der Autor nicht nur die gängige Lösung sondern auch welche Alternativen es gibt und wo Vor- und Nachteile liegen. Das so herausgearbeitete Verständnis des Workflows zeigt dem Leser, dass für bestimmte Aufgabenbereiche ein nicht Standard vorgehen durchaus auch angebracht und vorteilhaft sein kann. Ob nun ein, zwei oder viele Mitarbeiter auf das Git Repository zugreifen, es zentral oder verteilt liegt und ob es bestimmte Standards für branches oder merges gibt.
Fazit
Meine subjektive Meinung zu dem Buch „Versionsverwaltung mit Git“: sehr gut. Objektiv gesehen ist das Buch ein guter Einstieg für Neulinge in Git. Auch Leute die Git bereits einsetzen, aber die Materie dahinter noch nicht verstanden haben eine klare Empfehlung. Ich denke sogar erfahrene Git Administratoren finden in dem Buch noch das eine oder andere das neu ist.