-
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)
4.5 Git op de server - Git Daemon
Git Daemon
Nu gaan we een daemon opzetten die repositories verspreid via het “Git” protocol. Dit is een gebruikelijke keuze voor snelle, ongeauthenticerde toegang tot je Git data. Onthoud dat omdat dit geen geauthenticeerde service is, alles wat je verspreid publiek is in het netwerk.
Als je deze server buiten je firewall draait, zou het alleen gebruikt moeten worden voor projecten die publiekelijk zichtbaar zijn naar de wereld. Als de server die je draait binnen je firewall staat, zou je het kunnen gebruiken voor projecten met een groot aantal mensen of computers (continue integratie of build servers) die alleen-lees-toegang hebben, waarvoor je niet een SSH sleutel wilt toevoegen voor elk van deze.
In elk geval, het Git protocol is relatief simpel om op te zetten. Het enige wat je hoeft te doen is dit commando in de achtergrond (daemonize) draaien:
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
De --reuseaddr
optie staat de server toe om te herstarten zonder te wachten tot oude connecties een time-out krijgen, de --base-path
optie staat mensen toe om projecten te clonen zonder het volledige pad te specificeren, en het pad aan het einde vertelt de Git daemon waar hij moet kijken voor de te exporteren repositories.
Als je een firewall draait, zul je er poort 9418 open moeten zetten op de machine waar je dit op gaat doen.
Je kunt dit proces op een aantal manieren daemoniseren, afhankelijk van het besturingssystem waarop je draait.
Omdat systemd
het meest gebruikte init systeem is onder de moderne Linux distributies, kan je dat gebruiken voor dat doel.
Simpelweg een bestand in /etc/systemd/system/git-daemon.service
zetten met deze inhoud:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
Het zal je op zijn gevallen dat de Git daemon hier wordt gestart met git
als zowel de group als user.
Pas het aan aan jouw standaard en org ervoor dat de gebruiker bestaat op het systeem.
Controleer ook dat de Git binary inderdaad op /usr/bin/git
staat en wijzig het pad indien noodzakelijk.
Als laatste roep je systemctl enable git-daemon
aan om de service automatisch te starten op boot-tijd, en je kunt de service starten en stoppen met respectievelijk systemctl start git-daemon
en systemctl stop git-daemon
.
Op andere systemen zul je misschien xinetd
willen gebruiken, een script in je sysvinit
systeem, of iets anders — zolang je dat commando maar ge-daemoniseerd krijgt en deze op een of andere manier in de gaten gehouden wordt.
Vervolgens zul je Git moeten vertellen op welke repositories je onauthenticeerde Gitserver gebaseerde toegang toestaat.
Je kunt dit doen voor elke repository door een bestand genaamd git-deamon-export-ok
te maken.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Het feit dat dit bestand er is geeft aan dat Git dat project zonder authenticatie kan verspreiden.