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. Vie­le von euch ken­nen viel­leicht Sub­ver­si­on, kurz SVN, was schein­bar noch immer als eine Art Syn­onym für der­ar­ti­ge Sys­te­me im Netz zu gel­ten scheint. Dabei bie­tet Git so vie­le Vor­tei­le gegen­über bspw. Sub­ver­si­on. 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­plat­te 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­tei­le 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-Bewe­gung. Die Geschich­te von Git kann man im Wiki­pe­dia-Arti­kel zum The­ma nach­le­sen.

War­um man Ver­sio­nie­rung nut­zen soll­te? 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­nah­me 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, die­se Ä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ür­de die Rück­nah­me der Ände­run­gen hin­ge­gen nur weni­ge Sekun­den dau­ern. Die Ein­ga­be 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. Bei­spiel­haft:

git checkout 67g4

wür­de die Revi­si­on eurer Daten wie­der­her­stel­len, deren SHA1-Hash mit 67g4 beginnt, ohne dabei neue­re Ver­sio­nen anzu­fas­sen. Git hält also immer meh­re­re, näm­lich alle, eurer erstell­ten Revi­sio­nen vor. Die­ser Arti­kel soll aber kei­ne Git-Bedie­nungs­an­lei­tung wer­den, von denen gibt’s genug im Web, zum Bei­spiel hier. Nein, ich möch­te viel­mehr den wirk­lich genia­len Git-Hos­ting­ser­vice Git­Hub vor­stel­len.

500px-github

Das Unter­neh­men hin­ter Git­Hub wur­de im Febru­ar 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­de­re die Tat­sa­che, dass Git­Hub für Open-Source-Pro­jek­te kos­ten­freie Accounts anbie­tet, hat dem Unter­neh­men einen gro­ßen Popu­la­ri­täts­schub ver­schafft. Vie­le äußerst popu­lä­re Open-Source-Pro­jek­te wie Perl, Ruby on Rails, PHP, jQue­ry und JUnit sind mitt­ler­wei­le zu Git und auch zu Git­Hub gewech­selt.

Und das aus gutem Grun­de. Git­Hub bie­tet eine Funk­ti­ons­viel­falt, die ihres­glei­chen sucht. Vie­le Fea­tures erschlie­ßen sich dem Benut­zer erst nach einer Wei­le, aber dann möch­te 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 iPho­ne-freund­lich ist der Groß­teil die­ser Gra­phen mitt­ler­wei­le nicht mehr als Flash‑, son­dern als Can­vas-Ele­ment ver­füg­bar. Eben­falls her­vor­zu­he­ben ist die Viel­falt der ver­füg­ba­ren Com­mit-Hooks. Dabei han­delt es sich um klei­ne Pro­gram­me, die eine bestimm­te Akti­on bspw. nach einem erfolg­ten Com­mit durch­füh­ren kön­nen. Ich habe die­se 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-Benach­rich­ti­gung hin­aus noch vie­le wei­te­re nütz­li­che Hooks an, wie bspw. einen Ser­vice-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­bau­en. 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 fin­de ich bei­spiel­haft.

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 Tex­te stammt im Übri­gen aus mei­ner Feder, da ich mich gemel­det habe, als Git­Hub per Twit­ter einen Auf­ruf star­te­te, 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 eini­ge der Co-Über­set­zer wenig Ahnung von der deut­schen Orto­gra­phie haben. Das sorg­te dafür, dass ich qua­si alle Tex­te noch mal über­ar­bei­ten muss­te. Aber Ende gut, alles gut, die Über­set­zung ist online. Noch ist nicht die kom­plet­te 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­lau­fe 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 Eng­lisch-Kennt­nis­se ver­fü­gen, für die­je­ni­gen aber, denen es nicht so geht, ist nun auch die­se Hür­de genom­men.

Zu Beginn des Arti­kels pre­dig­te ich noch die Vor­tei­le, die eine dezen­tra­le Lösung hat und nun wer­be ich für einen Ser­vice, der doch wie­der alles zen­tra­li­siert? Fehl­an­zei­ge. Git ist und bleibt dezen­tral. Loka­le 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­ti­on schafft, die an Aus­fall­si­cher­heit nicht mehr zu über­bie­ten ist.

Auch wenn die Funk­ti­on 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. Die­se Funk­ti­on 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 tol­le Idee, ich nut­ze die Gists recht häu­fig um bei­spiels­wei­se 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 Wei­le schon beschrie­ben habe, könnt ihr auch einen eige­nen Git-Ser­ver mit jedem han­dels­üb­li­chen Linux auf­set­zen, der War­tungs­auf­wand liegt dann aber auf eurer Sei­te. Pro­gram­miert ihr gera­de an einem Open-Source-Pro­jekt 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-Über­sicht von Git­Hub bie­tet mehr Infor­ma­tio­nen zu den Prei­sen. Typisch für die USA sind die Prei­se etwas höher, als man es von Deutsch­land gewohnt ist, der Ser­vice ist sein Geld aber alle­mal Wert.

Ich lie­be Git­Hub und möch­te 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ür­de, und ihr wer­det ver­ste­hen, wie­so ich so begeis­tert bin.

Beteilige dich an der Unterhaltung

1 Kommentar

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.