| wat | git |
|---|---|
| git? | het is een source control systeem |
| ik begrijp het niet | misschien 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 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!













wauw, hier snapte ik dus echt helemaal niks van.
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.Oooow gauw opzoeken dat is nog weer iets nieuws!!!
Je kunt dan beter je huidige werk stashen, of anders committen (en de commit later squashen). Daarna nieuwe hotfix-branch aanmaken
Iets met computers dus?
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.
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.
Oke keith, jij snapt zelfs dát deeltje dus niet..
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.
Ik heb het einde van de recensie gehaald!!
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!
Wat gebruik je zelf?
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.
“Deze bijdrage verscheen eerder in de Dorkskrant van 13 december 2011.”
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.
Tower en Github apps bieden een prima GUI
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
Er is niet veel computershizzle waar ik geen reet van snap. Maar Git is er een van.
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.
Nou, kom maar op met die tentamenvraag!
Ik ken Git verder niet,maar uit deze recensie kan ik verder geen functionaliteiten van Git halen die SVN of eventueel Mercurial niet heeft….
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.
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.
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!
….euh..het is niet zo dat ik keus had bij mijn vorige werkgever
“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?
Nee hoor je hebt gelijk. Dit noemt Kees van Kooten schermblindheid. Maar ja, mijn typemachine heeft geen WordPress-plugin.
‘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.
‘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..?
Ach ja het *vereist* natuurlijk een steile leercurve.
Joost,
Nu je het over computers hebt, heb je binnenkort tijd om mijn beeldscherm te repareren?
grrrrr http://www.recensiekoning.nl/2011/03/12475/verstand-van-computers
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!
Ik heb dat ook, kan zowel bij de recensie als bij de meeste comments alleen maar denken: “huh?”
GIT FTW!
Laatst ook nog een kerstboom in een van de GIT-projecten waar ik in werk!
http://yfrog.com/kedmcep
Een heel bekend beeld! Props trouwens voor een achternaam eindigend op bach!