Git

git
watgit
git?het is een source control systeem
ik begrijp het nietmisschien beter als je deze even overslaat
maar komt dit op het tentamen?ja, en straks een mondelinge overhoring
zo zeg, meneer doet uit de
hoogte met zijn nerden-shit
joe!

Een van de meeste stereotiepe geeks die je zult vinden is Linus Torvalds, de Zweeds-sprekende nerd uit Finland. Nadat hij in een marathonsessie van vier uur in een sauna Linux had geprogrammeerd vond ie het tijd om aan iets nieuws te beginnen: het source-control systeem Git.

Voor die mensen toch graag deze recensie willen lezen, maar niet weten wat een source-controlsysteem is: in het heel kort is het een programma om samen aan bestanden te werken. Je kunt wijzigingen makkelijk ongedaan maken, je kunt je werk makkelijk delen, en je kunt samen aan een bestand werken waarbij het systeem de veranderingen later mooi kan samenvoegen. Dat klinkt allemaal heel communistisch, wat goed kan kloppen want de familie Torvalds maakte deel uit van een behoorlijk hardline communistische minderheid, volgens Wikipedia. Bij Wikipedia werken ze bijvoorbeeld ook met een rudimentair source-controlsysteem. En met klootzakken die Recensiekoning niet encyclopedisch vinden.

Haihai, ik ben Linus en uit mijn grote hoofd kun je afleiden dat ik honderd keer zo slim als jij ben.

Al goed, Linus had het beste voor met computerprogrammeurs. Hij had zelfs bedoeld om Git aan de man te brengen als standaard in computers, waardoor nooit meer iemand een bestand kwijtraakt of kapotmaakt! Hoor je dat, politie van Alphen aan de Rijn? Horen jullie dat, ministerie van Defensie? Het had allemaal gekund, maar jullie zeiden: ‘Nee nee we willen Windows want daar zit een startknop in!’

Wat maakt Git beter dan andere source-controlsystemen, zoals SVN en CVS? Wat maakt Git beter dan programma’s als Microsoft Visual SourceSafe? Over dat laatste kan ik snel zijn: stel je Git voor als een huis met een open haard, goede isolatie en een voordeur. Met een tuintje desnoods, met mooie narcissen daarin. Microsoft Visual Sourcesafe zou dan een soort drol zijn. Een enorm riekende drol.

Eigenlijk is er weinig vergelijking. SVN en CVS zijn allebei klassieke systemen: één server, meerdere clients. Git pakt het anders aan: iedereen heeft een kopie van de gehele repository (en weg zijn de overgebleven lezers), waarbij je naar elkaar toe kan pushen en pullen. In de praktijk wordt er vaak één centrale repository aangesteld, vanwege het gemak, maar die noodzaak is er niet. Dit betekent dat je dus ook zonder internetverbinding erop los kan committen, mergen en stashen. Op het moment dat je verbinding hebt typ je git push en alles wordt op de server gezet.

Git bevordert in tegenstelling tot de andere source-controlsystemen behoorlijk uitgebreide branch- en mergestrategieën. Als je versiestromen zou representeren met rivieren zou je kunnen zeggen dat als SVN de Rijn voorstelt tot aan de Nederlandse grens (af en toe takt er iets af, af en toe komt er een Moezel bij), dan is Git toch wel het Nederlandse gedeelte: nog voor de Rijn ‘welkom in Nederland’ kan zeggen is ie al opgesplitst in de Waal en de Nederrijn, via het kanaal van huppeldepup. Later merget de Maas zich weer via een topic-branch in de Waal en wordt het geheel in het Hollands diep gemerget, die ineens in Rotterdam weer brancht in de Nieuwe Maas. Zo kun je Git ook zien: een Prins Clausplein aan branches en merges. Het klinkt ingewikkeld, en dat is het ook, maar het is een weldaad voor programmeurs.

Maar het mooiste van Git is: het werkt. Wat er ook gebeurt, het werkt. SVN zegt: ‘O god er is een probleem, weet je wat ik doe? Ik lock je hele working tree en je zoekt het maar uit. Ik ga even in de kroeg zitten.’ Git zegt: ‘Wacht hier dit gaat er mogelijkerwijs fout, ik denk dat we het zo kunnen oploss.. ja, ja oké ik heb het, geen probleem.’ En lukt het Git niet, dan legt ie precies uit wat er is. Hij zegt zelfs: ‘Wat? Dat had je vast niet bedoeld. Wil je niet liever dit doen?’

Helaas is Git zo uitgebreid, dat er soms een wat steile leercurve vereist wordt. Ik moet elke dag nog wel even opzoeken hoe een commando heet, of wat rebase nou toch ook weer betekent. De steile leercurve levert een ster aftrek op. Vier sterren netto. Tot bij het tentamen!

36 Comments

  1. +1-1301
    Dus

    wauw, hier snapte ik dus echt helemaal niks van.

  2. +1-160

    Zowaar een overgebleven lezer! Het mooiste aan git is nog git add -p, waarmee je aparte chunks kunt committen. Bijvoorbeeld een snelle fix tussendoor in een bestanden waar elders enorm grote wijzigingen klaarstaan.

  3. +1-1210
    Swillie

    Iets met computers dus?

  4. +1-1724
    Keith

    Eigenlijk ben ik de beledigende “dit snappen ze toch niet” zat. Bovendien is het een makkelijke manier om mensen te laten doorlezen, omdat ze dan zichzelf kunnen wijsmaken dat ze vast heel slim zijn dat ze het einde hebben gehaald.

    Nou, ik ben slim genoeg deze goedkope auteurstruc te doorzien en na vier-en-een-halve alinea alvast een reactie te plaatsen.

    • +1-1130
      Olaf

      Het lijkt me eerder een vriendelijk voorbehoud voor de niet-technisch-onderlegde lezer – als een soort geste – dan een pocherig: jullie snappen het toch niet, Keith.

    • +1-1130
      Eline

      Oke keith, jij snapt zelfs dát deeltje dus niet..

    • +1-100
      Keith

      Dat het niet letterlijk zo is bedoeld snap ik ook wel, Olaf. Maar dan nog vind ik het een storende constructie, zeker als hij zo wordt uitgemolken.

  5. +1-190

    Ik heb het einde van de recensie gehaald!!

  6. +1-122
    Jeroen

    Ok, nerd genoeg om te snappen waar het over gaat, en eigenwijs genoeg om te zeggen: waar haal je de sterren vandaan? GIT is juist de drol van de versiebeheersystemen, omdat het te correct en totaal niet pragmatisch is. Zoiets als “Git bevordert in tegenstelling tot de andere source-controlsystemen behoorlijk uitgebreide branch- en mergestrategieën.” zou moeten zijn: Git forceert (…), omdat je gedwongen wordt allerlei rare onlogische bochten te gaan liggen om source code te verspreiden. Als je niet voor Linus bent, ben je tegen hem. Zoiets. Valt wat mij betreft in de categorie Kameel en XML: lelijk en een berg overhead waar je U met een hoofdletter tegen zegt!

    • +1-100
      Joof

      Wat gebruik je zelf?

    • +1-100
      Terence

      Zo was ik zelf dus ook toen ik net aan GIT begon, maar je moet de gedachtegang van CVS of SVN totaal los laten. Als je dat niet doet, zie je GIT juist als een tegenvaller, terwijl het juist zo correct en veilig omgaat met je code.

  7. +1-1461

    “Deze bijdrage verscheen eerder in de Dorkskrant van 13 december 2011.”

  8. +1-120

    Het probleem met Git is voornamelijk de learning curve. Ik begrijp Git, maar ik kan het niet uitleggen aan een team van programmeurs zonder SCM ervaring. Subversion is hierin een stuk makkelijker.

    Laten we ook eerlijk zijn; Alles draait in de grote software wereld om ‘hoe het er uit ziet’, ofwel GUI. Er zijn voor Subversion talloze goed-werkende programma’s die het voor leken een feestje maakt om SCM toe te passen. Voor Git is dit nog erg matig, voor OS X ten minste wel.

  9. +1-100
    Kris

    Voor iedereen die de recensie niet kon volgen, maar wel interessant vond (en ook voor iedereen die het toch wel volgde :-) ), raad ik het volgende gratis (even een formulier invullen, zelfs geen verzendkosten!) boek aan:
    Version Control by Example
    In dit boek wordt aan de hand van een voorbeeld de werking van en verschillen tussen SVN, Git, Mercurial en Veracity behandeld. Het maakt de leercurve van Git een stuk minder steil :-)

  10. +1-140

    Er is niet veel computershizzle waar ik geen reet van snap. Maar Git is er een van.

  11. +1-110
    Tim

    Hou op over CVS, dramazooi. Idem voor SourceSafe, totdat ze het snapten en het in VS.NET hingen als integraal (en werkend!) onderdeel.

    En dan ben ik niet eens ontwikkelaar.

  12. +1-150
    Bas

    Nou, kom maar op met die tentamenvraag!

  13. +1-100
    Linda

    Ik ken Git verder niet,maar uit deze recensie kan ik verder geen functionaliteiten van Git halen die SVN of eventueel Mercurial niet heeft….

    • +1-100
      Joost

      De offline-functionaliteit, maar met name het probleemoplossend vermogen… Ja en dan heb je nog submodules, rebasing, partial commits m.b.v een staging index (of chunks zoals Rob Kaper zegt), etc. etc.

      Ik ken Mercurial niet, maar dat schijnt in de buurt te komen.

    • +1-100
      Linda

      Ik ben recent begonnen met Mercurial en dat bevalt me nu al beter dan SVN, geen idee hoe dat zit met committen van chunks. Maar offline werken is natuurlijk ook mogelijk met Mercurial, je hebt toch je eigen locale kopie van de repository.

    • +1-100
      Joost

      Kijk kijk dan begint dat er behoorlijk op te lijken! Ik denk dat er dan in de praktijk idd weinig verschil tussen Mercurial en Git zit. Maar SVN Linda, SVN!

    • +1-100
      Linda

      ….euh..het is niet zo dat ik keus had bij mijn vorige werkgever ;)

  14. +1-140
    Marjolein

    “Bij Wikipedia werken ze bijvoorbeeld ook met een rudimentair source-controlsysteem in.” Volgens mij staat er een woordje te veel in die zin, of ligt dat aan mijn ondermaatse programmeerkennis?

    • +1-110
      Joost

      Nee hoor je hebt gelijk. Dit noemt Kees van Kooten schermblindheid. Maar ja, mijn typemachine heeft geen WordPress-plugin.

    • +1-100
      Geert-Jan

      ‘Ik houd meer van Kees van Kooten, jij houdt meer van Wim de Bie. Jadiejadajada Wim de Bie, Wim de Bie jadiejadajada ik scheur je op mijn brommert met een teringvaart voorbij, want jij; je bent veel dommer als mij’

      Mijn excuses voor de gans niet inhoudelijke toevoeging alhier, maar ja, ik weet vrijwel niets van software e.d., en wilde toch ook graag iets zeggen:).

      Citaat is overigens een slechte weergave van flarden uit een liedje van volgens mij Ajuinen en Look; erg leuk voor wie hen nog niet kent.

  15. +1-100
    Arjan

    ‘Helaas is Git zo uitgebreid dat de leercurve soms wat steil is…’ Naast het gehele artikel, snap ik laatste ook niet.. Is een steile leercurve niet juist prettig? Of bedoel je: doe mij maar een vlakke leercurve, want die steile, daar kom ik zo lastig tegenop..?

  16. +1-150
    de100ste

    Joost,
    Nu je het over computers hebt, heb je binnenkort tijd om mijn beeldscherm te repareren?

  17. +1-150
    Nienke

    Echt grappig dit. Ik snapte niet alleen de recensie zelf niet, ook van de reacties snap ik er maar 13… Hoewel, best veel nog, valt me mee. Fijn dat de rest elkaar lijkt te begrijpen!

  18. +1-100
    Terence

    GIT FTW!

    Laatst ook nog een kerstboom in een van de GIT-projecten waar ik in werk!
    http://yfrog.com/kedmcep

Reageer

Je e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*


*

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>