-
1. Kom igång
- 1.1 Om versionshantering
- 1.2 En kort historik om Git
- 1.3 Vad är Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 Första gången med Git
- 1.7 Få hjälp
- 1.8 Sammanfattning
-
2. Grunderna i Git
- 2.1 Att få tag i ett Git‑kodförråd
- 2.2 Spara ändringar i kodförrådet
- 2.3 Visa incheckningshistoriken
- 2.4 Ångra saker
- 2.5 Arbeta med fjärrkodförråd
- 2.6 Att tagga
- 2.7 Git-alias
- 2.8 Sammanfattning
-
3. Git-grenar
- 3.1 Grenar i korthet
- 3.2 Grundläggande gren- och sammanfogningsarbete
- 3.3 Grenhantering
- 3.4 Arbetsflöden med grenar
- 3.5 Fjärrgrenar
- 3.6 Ombasering
- 3.7 Sammanfattning
-
4. Git på servern
- 4.1 Protokollen
- 4.2 Konfigurera Git på en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konfigurera servern
- 4.5 Git-demon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Tredjepartsalternativ
- 4.10 Sammanfattning
-
5. Distribuerat Git
-
6. GitHub
-
7. Git-verktyg
- 7.1 Revisionsurval
- 7.2 Interaktiv köläggning
- 7.3 Lägga undan och städa
- 7.4 Signera ditt arbete
- 7.5 Sökning
- 7.6 Skriva om historik
- 7.7 Nollställning förklarad
- 7.8 Avancerad sammanslagning
- 7.9 Rerere
- 7.10 Felsöka med Git
- 7.11 Undermoduler
- 7.12 Bunta
- 7.13 Ersätt
- 7.14 Lagring av inloggningsuppgifter
- 7.15 Sammanfattning
-
8. Anpassa Git
- 8.1 Git‑konfiguration
- 8.2 Git‑attribut
- 8.3 Git‑krokar
- 8.4 Ett exempel på Git‑upprätthållen policy
- 8.5 Sammanfattning
-
9. Git och andra system
- 9.1 Git som klient
- 9.2 Migrera till Git
- 9.3 Sammanfattning
-
10. Git bakom kulisserna
- 10.1 Lågnivådel och användardel
- 10.2 Git-objekt
- 10.3 Git-referenser
- 10.4 Packfiler
- 10.5 Refspecen
- 10.6 Överföringsprotokoll
- 10.7 Underhåll och dataåterställning
- 10.8 Miljövariabler
- 10.9 Sammanfattning
-
A1. Bilaga A: Git i andra miljöer
- A1.1 Grafiska gränssnitt
- A1.2 Git i Visual Studio
- A1.3 Git i Visual Studio Code
- A1.4 Git i IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git i Sublime Text
- A1.6 Git i Bash
- A1.7 Git i Zsh
- A1.8 Git i PowerShell
- A1.9 Sammanfattning
-
A2. Bilaga B: Bädda in Git i dina applikationer
- A2.1 Git på kommandoraden
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga C: Git-kommandon
- A3.1 Uppstart och konfiguration
- A3.2 Skaffa och skapa projekt
- A3.3 Grundläggande ögonblicksbilder
- A3.4 Grening och sammanslagning
- A3.5 Dela och uppdatera projekt
- A3.6 Inspektion och jämförelse
- A3.7 Felsökning
- A3.8 Patchning
- A3.9 E‑post
- A3.10 Externa system
- A3.11 Administration
- A3.12 Lågnivåkommandon
4.6 Git på servern - Smart HTTP
Smart HTTP
Nu har vi autentiserad åtkomst via SSH och icke-autentiserad åtkomst via git://, men det finns också ett protokoll som kan göra båda samtidigt.
Att sätta upp Smart HTTP handlar i praktiken om att aktivera CGI-skriptet git-http-backend som följer med Git.
CGI:t läser sökväg och huvudrader som skickas av git fetch eller git push till en HTTP-URL och avgör om klienten kan prata HTTP (vilket alla klienter kan sedan 1.6.6).
Om CGI:t ser att klienten är smart kommunicerar den smart, annars faller den tillbaka till det dumma läget (så att äldre klienter fortfarande kan läsa).
Låt oss gå igenom en enkel uppsättning. Vi använder Apache som CGI-server. Om du inte har Apache kan du installera det på en Linuxmaskin med något i stil med:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
Detta aktiverar även modulerna mod_cgi, mod_alias och mod_env, som behövs för att allt ska fungera.
Du behöver också sätta Unix-gruppen för katalogerna under /srv/git till www-data så att webbservern kan läsa och skriva i kodförråden, eftersom Apache-instansen som kör CGI:t normalt kör som den användaren:
$ chgrp -R www-data /srv/git
Sedan behöver du lägga till några rader i Apaches konfiguration så att git-http-backend hanterar allt som kommer in under /git:
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Om du utelämnar miljövariabeln GIT_HTTP_EXPORT_ALL kommer Git bara att servera kodförråd som har filen git-daemon-export-ok, precis som Git‑demonen gör.
Till sist behöver du tala om för Apache att tillåta anrop till git-http-backend och att skrivningar ska kräva autentisering, till exempel med ett Auth-block som detta:
<Files "git-http-backend">
AuthType Basic
AuthName "Git Access"
AuthUserFile /srv/git/.htpasswd
Require expr !(%{QUERY_STRING} -strmatch '*service=git-receive-pack*' || %{REQUEST_URI} =~ m#/git-receive-pack$#)
Require valid-user
</Files>
Detta kräver att du skapar en .htpasswd-fil med lösenord för alla giltiga användare.
Här är ett exempel där användaren "schacon" läggs till:
$ htpasswd -c /srv/git/.htpasswd schacon
Apache har många sätt att autentisera användare, så du får välja och implementera det som passar. Det här är bara det enklaste exemplet. Du kommer också nästan säkert vilja köra allt över SSL så att data krypteras.
Vi går inte djupare i Apachekonfiguration, eftersom du kan använda en annan server eller ha andra autentiseringsbehov.
Poängen är att Git levererar CGI:t git-http-backend, som när det anropas sköter hela förhandlingen för att skicka och ta emot data över HTTP.
Det implementerar inte autentisering i sig, men det styrs enkelt i webbserverlagret som anropar det.
Det fungerar med nästan vilken CGI-kapabel webserver som helst, så använd den du är mest bekväm med.
|
Notera
|
För mer information om autentisering i Apache, se dokumentationen: https://httpd.apache.org/docs/current/howto/auth.html. |