Schlagwort-Archiv: Open Source

GitHub — ein Social Network für Code

500px-git-logo

Wer kennt Git nicht? Hand hoch. Nie­mand? Gut…

Git ist ein ver­teil­tes Ver­sio­nie­rungs­sys­tem. Viele von euch ken­nen viel­leicht Sub­ver­sion, kurz SVN, was schein­bar noch immer als eine Art Syn­onym für der­ar­tige Sys­teme im Netz zu gel­ten scheint. Dabei bie­tet Git so viele Vor­teile gegen­über bspw. Sub­ver­sion. Git ist näm­lich, im Gegen­satz zu SVN, ein ver­teil­tes Sys­tem. Man benö­tigt also nicht zwin­gend einen Ser­ver und kann auch sei­nen eige­nen Code auf sei­ner eige­nen Fest­platte ver­sio­nie­ren. Also selbst wenn ihr Soft­ware im Allein­gang ent­wi­ckelt, braucht ihr nicht auf die zahl­rei­chen Vor­teile eines Ver­sio­nie­rungs­sys­tems zu ver­zich­ten. Ach ja, Git ist übri­gens eine Erfin­dung von Linus Tor­valds, dem Begrün­der der Linux-Bewegung. Die Geschichte von Git kann man im Wikipedia-Artikel zum Thema nachlesen.

Warum man Ver­sio­nie­rung nut­zen sollte? Der Grund ist recht sim­pel: ihr schreibt Code, oder Text, egal, wel­cher Art. Nach eini­gen Stun­den stellt ihr fest, dass die letz­ten Ände­run­gen voll­kom­me­ner Blöd­sinn gewe­sen sind. Die Rück­nahme der Ände­run­gen wird aber ver­mut­lich ein Weil­chen dau­ern. Viel­leicht sogar län­ger als es gedau­ert hat, diese Ände­run­gen zu imple­men­tie­ren. Und wer hat schon Lust, nach jeder Ände­rung per Hand eine Sicher­heits­ko­pie der alten Datei anzu­le­gen? Hät­tet ihr ein Sys­tem zur Ver­sio­nie­rung ver­wen­det, würde die Rück­nahme der Ände­run­gen hin­ge­gen nur wenige Sekun­den dau­ern. Die Ein­gabe des Befehls

git log

gibt eure letz­ten Com­mits aus. Jeder die­ser Com­mits hat einen SHA1-Hash als Iden­ti­fi­ka­tor, von dem man nur die ers­ten weni­gen Stel­len braucht. Beispielhaft:

git checkout 67g4

würde die Revi­sion eurer Daten wie­der­her­stel­len, deren SHA1-Hash mit 67g4 beginnt, ohne dabei neuere Ver­sio­nen anzu­fas­sen. Git hält also immer meh­rere, näm­lich alle, eurer erstell­ten Revi­sio­nen vor. Die­ser Arti­kel soll aber keine Git-Bedienungsanleitung wer­den, von denen gibt’s genug im Web, zum Bei­spiel hier. Nein, ich möchte viel­mehr den wirk­lich genia­len Git-Hostingservice Git­Hub vorstellen.

500px-github

Das Unter­neh­men hin­ter Git­Hub wurde im Februar 2008 gegrün­det und seit­dem erfreut sich die­ser Ser­vice einer immer grö­ßer wer­den­den Beliebt­heit. Ins­be­son­dere die Tat­sa­che, dass Git­Hub für Open-Source-Projekte kos­ten­freie Accounts anbie­tet, hat dem Unter­neh­men einen gro­ßen Popu­la­ri­täts­schub ver­schafft. Viele äußerst popu­läre Open-Source-Projekte wie Perl, Ruby on Rails, PHP, jQuery und JUnit sind mitt­ler­weile zu Git und auch zu Git­Hub gewechselt.

Und das aus gutem Grunde. Git­Hub bie­tet eine Funk­ti­ons­viel­falt, die ihres­glei­chen sucht. Viele Fea­tures erschlie­ßen sich dem Benut­zer erst nach einer Weile, aber dann möchte man sie nicht mehr mis­sen. So las­sen sich bspw. gra­fisch die Akti­vi­tä­ten der ein­zel­nen Ent­wick­ler dar­stel­len, die am jewei­li­gen Pro­jekt teil­neh­men. Sehr iPad– und iPhone-freundlich ist der Groß­teil die­ser Gra­phen mitt­ler­weile nicht mehr als Flash-, son­dern als Canvas-Element ver­füg­bar. Eben­falls her­vor­zu­he­ben ist die Viel­falt der ver­füg­ba­ren Commit-Hooks. Dabei han­delt es sich um kleine Pro­gramme, die eine bestimmte Aktion bspw. nach einem erfolg­ten Com­mit durch­füh­ren kön­nen. Ich habe diese Hooks auf mei­nem eige­nen Ser­ver haupt­säch­lich dazu benutzt, alle betei­lig­ten Ent­wick­ler über neue Com­mits zu infor­mie­ren. Git­Hub bie­tet über die E-Mail-Benachrichtigung hin­aus noch viele wei­tere nütz­li­che Hooks an, wie bspw. einen Service-Hook, der den Com­mit an einen Base­camp-, Camp­fire- oder Light­house–Account über­mit­telt. Git­Hub befin­det sich kon­ti­nu­ier­lich im Aus­bau und man kann regel­recht zuse­hen, wie die Ent­wick­ler die Platt­form wei­ter aus­bauen. Das Blog von Git­Hub ist in die­sem Zusam­men­hang eben­falls sehr lesens­wert. Die Trans­pa­renz die­ses Unter­neh­mens gegen­über ihren Kun­den finde ich beispielhaft.

The_jquery_network_-_github

Seit rund zwei Wochen ist Git­Hub auch in deut­scher Spra­che ver­füg­bar. Der Groß­teil der über­setz­ten Texte stammt im Übri­gen aus mei­ner Feder, da ich mich gemel­det habe, als Git­Hub per Twit­ter einen Auf­ruf star­tete, und nach Frei­wil­li­gen für die Über­set­zung gesucht hat. Wer mich kennt, weiß, dass ich dafür ein Fai­ble hab. Die Arbeit hat Spaß gemacht, auch wenn einige der Co-Übersetzer wenig Ahnung von der deut­schen Orto­gra­phie haben. Das sorgte dafür, dass ich quasi alle Texte noch mal über­ar­bei­ten musste. Aber Ende gut, alles gut, die Über­set­zung ist online. Noch ist nicht die kom­plette Web­site über­setzt, aber wie ich vom Koor­di­na­tor Scott Cha­con, der im Übri­gen eine Kory­phäe im Git-Bereich ist, erfah­ren habe, folgt die rest­li­che Web­site im Ver­laufe der Zeit. Ich gehe eigent­lich davon aus, dass Soft­ware­ent­wick­ler im All­ge­mei­nen über über­durch­schnitt­lich gute Englisch-Kenntnisse ver­fü­gen, für die­je­ni­gen aber, denen es nicht so geht, ist nun auch diese Hürde genommen.

Zu Beginn des Arti­kels pre­digte ich noch die Vor­teile, die eine dezen­trale Lösung hat und nun werbe ich für einen Ser­vice, der doch wie­der alles zen­tra­li­siert? Fehl­an­zeige. Git ist und bleibt dezen­tral. Lokale Com­mits müsst ihr erst dann zum Ser­ver schi­cken (der sog. Push), wenn ihr euren Code ande­ren Ent­wick­lern zur Ver­fü­gung stel­len wollt. Sämt­li­che Com­mits lie­gen also sowohl bei allen betei­lig­ten Ent­wick­lern, als auch auf dem Ser­ver, was eine Situa­tion schafft, die an Aus­fall­si­cher­heit nicht mehr zu über­bie­ten ist.

Auch wenn die Funk­tion an sich ein alter Hut ist, Git­Hub bie­tet ein Pas­te­bin an. Aber nicht irgend­ein Pas­te­bin, son­dern eines, das auch ver­sio­niert, also mit Git im Hin­ter­grund läuft. Diese Funk­tion nennt sich Gist und funk­tio­niert so, wie man es von ande­ren Pas­te­bins gewohnt ist, nur eben mit Ver­sio­nie­rung. Eine tolle Idee, ich nutze die Gists recht häu­fig um bei­spiels­weise häu­fig genutz­ten Code immer griff­be­reit zu haben.

Mein Rat: schaut euch sowohl Git, als auch Git­Hub gut an, wenn ihr pro­gram­miert, Web­sei­ten baut, Doku­men­ta­tio­nen schreibt oder ander­wei­tig mit kom­ple­xen Daten­be­stän­den zu tun habt. Wie ich vor einer Weile schon beschrie­ben habe, könnt ihr auch einen eige­nen Git-Server mit jedem han­dels­üb­li­chen Linux auf­set­zen, der War­tungs­auf­wand liegt dann aber auf eurer Seite. Pro­gram­miert ihr gerade an einem Open-Source-Projekt kos­tet euch die
Nut­zung von Git­Hub kei­nen Cent, wollt ihr euren kom­mer­zi­ell aus­ge­rich­te­ten Code able­gen, bekommt ihr einen geschütz­ten Zugang ab 7 US-$ (ca. 5,50 €) monat­lich. Die Tarif-Übersicht von Git­Hub bie­tet mehr Infor­ma­tio­nen zu den Prei­sen. Typisch für die USA sind die Preise etwas höher, als man es von Deutsch­land gewohnt ist, der Ser­vice ist sein Geld aber alle­mal Wert.

Ich liebe Git­Hub und möchte auf die­sen tol­len Ser­vice nicht mehr ver­zich­ten. Give it a try, wie der Eng­län­der jetzt sagen würde, und ihr wer­det ver­ste­hen, wieso ich so begeis­tert bin.