Git internals

Git er et open-source værktøj til software versionsstyring (et VCS). Det blev oprindelig udviklet af Linus Torvalds til at versionskontrol af Linux kernen, men det er efterfølgende blevet det mest populære VCS overhovedet.

Git er et distribueret system, dvs. der findes ikke nogen central server som en udvikler skal have forbindelse til for at kunne arbejde med Git. Udveksling af kode med andre udviklere i et udviklingsteam sker ganske vidst via et centralt repository (f.eks. via Github eller Bitbucket), men det er ikke nødvendigt at være forbundet med et repository for at kunne bruge Git - det skal kun bruges når man skal dele sin kode med andre udviklere. Hvis man arbejder alene på et projekt er det ikke et krav at koden også ligger i et Git repository.

Oprindelig er Git udviklet så det kan bruges i store projekter med udviklere der sidder mange forskellige steder rundt omkring i verden, men det er også velegnet til brug i små teams. Selv om vi normalt kun er to udviklere på vores egne projekter - og vi sidder normalt i det samme rum - så har vi haft stor glæde af at bruge Git fordi det giver os en effektiv måde at holde vores separate bidrag til et projekt i sync. Vi har også hele tiden en historik der gør det lettere for os at skifte mellem forskellige projekter.

Git er nemt at arbejde med - det meste af tiden. Men når man render ind i et problem kan det pludselig blive meget besværligt, fordi de fejlmeddelelser man får og Git-dokumentationen kan være næsten uforståelig. (Det er så grelt at nogen har lavet en parodi på Gits man pages).

Gits underliggende datastruktur er imidlertid forholdsvis simpel. Git gemmer alle sine data i filer i en .git mappe der er placeret i projektets rodmappe, og hvis man bruger lidt tid på at sætte sig ind i hvordan indholdet af denne mappe er struktureret har man pludselig en meget bedre ide om hvordan Git egentlig fungerer - og dermed også lettere ved at løse problemer.

Jeg er på GOTO Copenhagen disse dage, og formiddagens præsentation af Edward Thomson om Git internals indeholdt mange "aha" øjeblikke. Jeg skal helt sikkert læse mere om emnet når jeg er hjemme igen - og 9.1 Git Internals - Plumbing and Porcelain ligner et godt sted at starte.

Video af præsentationerne fra Goto Copenhagen bliver tilgængelige på et senere tidspunkt. Hvis man ikke vil vente, så er der links til videoer af andre præsentationer han har givet om samme emne på hans hjemmeside.