-
1. Aan de slag
- 1.1 Over versiebeheer
- 1.2 Een kort historisch overzicht van Git
- 1.3 Wat is Git?
- 1.4 De commando-regel
- 1.5 Git installeren
- 1.6 Git klaarmaken voor eerste gebruik
- 1.7 Hulp krijgen
- 1.8 Samenvatting
-
2. Git Basics
-
3. Branchen in Git
- 3.1 Branches in vogelvlucht
- 3.2 Eenvoudig branchen en mergen
- 3.3 Branch-beheer
- 3.4 Branch workflows
- 3.5 Branches op afstand (Remote branches)
- 3.6 Rebasen
- 3.7 Samenvatting
-
4. Git op de server
- 4.1 De protocollen
- 4.2 Git op een server krijgen
- 4.3 Je publieke SSH sleutel genereren
- 4.4 De server opzetten
- 4.5 Git Daemon
- 4.6 Slimme HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Hosting oplossingen van derden
- 4.10 Samenvatting
-
5. Gedistribueerd Git
-
6. GitHub
-
7. Git Tools
- 7.1 Revisie Selectie
- 7.2 Interactief stagen
- 7.3 Stashen en opschonen
- 7.4 Je werk tekenen
- 7.5 Zoeken
- 7.6 Geschiedenis herschrijven
- 7.7 Reset ontrafeld
- 7.8 Mergen voor gevorderden
- 7.9 Rerere
- 7.10 Debuggen met Git
- 7.11 Submodules
- 7.12 Bundelen
- 7.13 Vervangen
- 7.14 Het opslaan van inloggegevens
- 7.15 Samenvatting
-
8. Git aanpassen
- 8.1 Git configuratie
- 8.2 Git attributen
- 8.3 Git Hooks
- 8.4 Een voorbeeld van Git-afgedwongen beleid
- 8.5 Samenvatting
-
9. Git en andere systemen
- 9.1 Git als een client
- 9.2 Migreren naar Git
- 9.3 Samenvatting
-
10. Git Binnenwerk
- 10.1 Binnenwerk en koetswerk (plumbing and porcelain)
- 10.2 Git objecten
- 10.3 Git Referenties
- 10.4 Packfiles
- 10.5 De Refspec
- 10.6 Uitwisseling protocollen
- 10.7 Onderhoud en gegevensherstel
- 10.8 Omgevingsvariabelen
- 10.9 Samenvatting
-
A1. Bijlage A: Git in andere omgevingen
- A1.1 Grafische interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in Eclipse
- A1.5 Git in Sublime Text
- A1.6 Git in Bash
- A1.7 Git in Zsh
- A1.8 Git in PowerShell
- A1.9 Samenvatting
-
A2. Bijlage B: Git in je applicaties inbouwen
- A2.1 Commando-regel Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bijlage C: Git Commando’s
- A3.1 Setup en configuratie
- A3.2 Projecten ophalen en maken
- A3.3 Basic Snapshotten
- A3.4 Branchen en mergen
- A3.5 Projecten delen en bijwerken
- A3.6 Inspectie en vergelijking
- A3.7 Debuggen
- A3.8 Patchen
- A3.9 Email
- A3.10 Externe systemen
- A3.11 Beheer
- A3.12 Binnenwerk commando’s (plumbing commando’s)
A2.1 Bijlage B: Git in je applicaties inbouwen - Commando-regel Git
Als je applicatie bestemd is voor ontwikkelaars, is er een grote kans dat het kan profiteren van integratie met versiebeheer. Zelfs applicaties voor niet-ontwikkelaars, zoals document editors, kunnen potentieel profiteren van versiebeheer functionaliteit, en het model van Git werkt erg goed voor vele verschillende scenarios.
Als je Git moet integreren met je applicatie, heb je eigenlijk twee opties: een shell openen en de git
commando-regel tool aanroepen, of Git als library inbedden in je applicatie.
We zullen hier de integratie van de commandoregel en een aantal van de meest populaire inbedbare Git libraries behandelen.
Commando-regel Git
Een optie is om een shell proces op te starten (spawning) en de Git commando-regel tool gebruiken om het werk te doen. Dit heeft het voordeel van canoniek zijn, en alle mogelijkheden van Git worden ondersteund. Het is toevallig ook nog eens redelijk eenvoudig, omdat de meeste omgevingen waarin het programma draait een relatief eenvoudige manier hebben om een proces met commando-regel argumenten te aan te roepen. Echter, deze aanpak heeft ook een aantal nadelen.
Een ervan is dat alle uitvoer in platte tekst is. Dit houdt in dat je de soms gewijzigde uitvoer van Git moet parsen om de voortgang en resultaat informatie te lezen, wat inefficiënt en foutgevoelig kan zijn.
Een ander is een gebrekkige fout herstel. Als een repository op de een of andere manier corrupt is geraakt, of de gebruiker heeft een configuratiewaarde misvormd, zal Git simpelweg weigeren om een groot aantal operaties uit te voeren.
Weer een ander is proces beheer. Git eist dat je een shell omgeving bijhoudt in een separaat proces, wat ongewilde complexiteit kan toevoegen. Het coördineren van veel van dit soort processen (vooral als de kans bestaat dat dezelfde repository door een aantal processen wordt benaderd) kan een nogal grote uitdaging zijn.