Wer kennt Git nicht? Hand hoch. Niemand? Gut…
Git ist ein verteiltes Versionierungssystem. Viele von euch kennen vielleicht Subversion, kurz SVN, was scheinbar noch immer als eine Art Synonym für derartige Systeme im Netz zu gelten scheint. Dabei bietet Git so viele Vorteile gegenüber bspw. Subversion. Git ist nämlich, im Gegensatz zu SVN, ein verteiltes System. Man benötigt also nicht zwingend einen Server und kann auch seinen eigenen Code auf seiner eigenen Festplatte versionieren. Also selbst wenn ihr Software im Alleingang entwickelt, braucht ihr nicht auf die zahlreichen Vorteile eines Versionierungssystems zu verzichten. Ach ja, Git ist übrigens eine Erfindung von Linus Torvalds, dem Begründer der Linux-Bewegung. Die Geschichte von Git kann man im Wikipedia-Artikel zum Thema nachlesen.
Warum man Versionierung nutzen sollte? Der Grund ist recht simpel: ihr schreibt Code, oder Text, egal, welcher Art. Nach einigen Stunden stellt ihr fest, dass die letzten Änderungen vollkommener Blödsinn gewesen sind. Die Rücknahme der Änderungen wird aber vermutlich ein Weilchen dauern. Vielleicht sogar länger als es gedauert hat, diese Änderungen zu implementieren. Und wer hat schon Lust, nach jeder Änderung per Hand eine Sicherheitskopie der alten Datei anzulegen? Hättet ihr ein System zur Versionierung verwendet, würde die Rücknahme der Änderungen hingegen nur wenige Sekunden dauern. Die Eingabe des Befehls
git log
gibt eure letzten Commits aus. Jeder dieser Commits hat einen SHA1-Hash als Identifikator, von dem man nur die ersten wenigen Stellen braucht. Beispielhaft:
git checkout 67g4
würde die Revision eurer Daten wiederherstellen, deren SHA1-Hash mit 67g4 beginnt, ohne dabei neuere Versionen anzufassen. Git hält also immer mehrere, nämlich alle, eurer erstellten Revisionen vor. Dieser Artikel soll aber keine Git-Bedienungsanleitung werden, von denen gibt’s genug im Web, zum Beispiel hier. Nein, ich möchte vielmehr den wirklich genialen Git-Hostingservice GitHub vorstellen.
Das Unternehmen hinter GitHub wurde im Februar 2008 gegründet und seitdem erfreut sich dieser Service einer immer größer werdenden Beliebtheit. Insbesondere die Tatsache, dass GitHub für Open-Source-Projekte kostenfreie Accounts anbietet, hat dem Unternehmen einen großen Popularitätsschub verschafft. Viele äußerst populäre Open-Source-Projekte wie Perl, Ruby on Rails, PHP, jQuery und JUnit sind mittlerweile zu Git und auch zu GitHub gewechselt.
Und das aus gutem Grunde. GitHub bietet eine Funktionsvielfalt, die ihresgleichen sucht. Viele Features erschließen sich dem Benutzer erst nach einer Weile, aber dann möchte man sie nicht mehr missen. So lassen sich bspw. grafisch die Aktivitäten der einzelnen Entwickler darstellen, die am jeweiligen Projekt teilnehmen. Sehr iPad- und iPhone-freundlich ist der Großteil dieser Graphen mittlerweile nicht mehr als Flash‑, sondern als Canvas-Element verfügbar. Ebenfalls hervorzuheben ist die Vielfalt der verfügbaren Commit-Hooks. Dabei handelt es sich um kleine Programme, die eine bestimmte Aktion bspw. nach einem erfolgten Commit durchführen können. Ich habe diese Hooks auf meinem eigenen Server hauptsächlich dazu benutzt, alle beteiligten Entwickler über neue Commits zu informieren. GitHub bietet über die E‑Mail-Benachrichtigung hinaus noch viele weitere nützliche Hooks an, wie bspw. einen Service-Hook, der den Commit an einen Basecamp-, Campfire- oder Lighthouse-Account übermittelt. GitHub befindet sich kontinuierlich im Ausbau und man kann regelrecht zusehen, wie die Entwickler die Plattform weiter ausbauen. Das Blog von GitHub ist in diesem Zusammenhang ebenfalls sehr lesenswert. Die Transparenz dieses Unternehmens gegenüber ihren Kunden finde ich beispielhaft.
Seit rund zwei Wochen ist GitHub auch in deutscher Sprache verfügbar. Der Großteil der übersetzten Texte stammt im Übrigen aus meiner Feder, da ich mich gemeldet habe, als GitHub per Twitter einen Aufruf startete, und nach Freiwilligen für die Übersetzung gesucht hat. Wer mich kennt, weiß, dass ich dafür ein Faible hab. Die Arbeit hat Spaß gemacht, auch wenn einige der Co-Übersetzer wenig Ahnung von der deutschen Ortographie haben. Das sorgte dafür, dass ich quasi alle Texte noch mal überarbeiten musste. Aber Ende gut, alles gut, die Übersetzung ist online. Noch ist nicht die komplette Website übersetzt, aber wie ich vom Koordinator Scott Chacon, der im Übrigen eine Koryphäe im Git-Bereich ist, erfahren habe, folgt die restliche Website im Verlaufe der Zeit. Ich gehe eigentlich davon aus, dass Softwareentwickler im Allgemeinen über überdurchschnittlich gute Englisch-Kenntnisse verfügen, für diejenigen aber, denen es nicht so geht, ist nun auch diese Hürde genommen.
Zu Beginn des Artikels predigte ich noch die Vorteile, die eine dezentrale Lösung hat und nun werbe ich für einen Service, der doch wieder alles zentralisiert? Fehlanzeige. Git ist und bleibt dezentral. Lokale Commits müsst ihr erst dann zum Server schicken (der sog. Push), wenn ihr euren Code anderen Entwicklern zur Verfügung stellen wollt. Sämtliche Commits liegen also sowohl bei allen beteiligten Entwicklern, als auch auf dem Server, was eine Situation schafft, die an Ausfallsicherheit nicht mehr zu überbieten ist.
Auch wenn die Funktion an sich ein alter Hut ist, GitHub bietet ein Pastebin an. Aber nicht irgendein Pastebin, sondern eines, das auch versioniert, also mit Git im Hintergrund läuft. Diese Funktion nennt sich Gist und funktioniert so, wie man es von anderen Pastebins gewohnt ist, nur eben mit Versionierung. Eine tolle Idee, ich nutze die Gists recht häufig um beispielsweise häufig genutzten Code immer griffbereit zu haben.
Mein Rat: schaut euch sowohl Git, als auch GitHub gut an, wenn ihr programmiert, Webseiten baut, Dokumentationen schreibt oder anderweitig mit komplexen Datenbeständen zu tun habt. Wie ich vor einer Weile schon beschrieben habe, könnt ihr auch einen eigenen Git-Server mit jedem handelsüblichen Linux aufsetzen, der Wartungsaufwand liegt dann aber auf eurer Seite. Programmiert ihr gerade an einem Open-Source-Projekt kostet euch die
Nutzung von GitHub keinen Cent, wollt ihr euren kommerziell ausgerichteten Code ablegen, bekommt ihr einen geschützten Zugang ab 7 US-$ (ca. 5,50 €) monatlich. Die Tarif-Übersicht von GitHub bietet mehr Informationen zu den Preisen. Typisch für die USA sind die Preise etwas höher, als man es von Deutschland gewohnt ist, der Service ist sein Geld aber allemal Wert.
Ich liebe GitHub und möchte auf diesen tollen Service nicht mehr verzichten. Give it a try, wie der Engländer jetzt sagen würde, und ihr werdet verstehen, wieso ich so begeistert bin.
Eine Antwort zu “GitHub — ein Social Network für Code”
[…] geraumer Zeit bloggte ich hier schon mal über GitHub, einem sozialen Netzwerk für Code. Viel Zeit ist seitdem verstrichen, andere Anbieter […]