-
1. Kom igång
- 1.1 Om versionshantering
- 1.2 En kort historik av Git
- 1.3 Vad är Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 Använda Git för första gången
- 1.7 Få hjälp
- 1.8 Sammanfattning
-
2. Grunder i Git
- 2.1 Skaffa ett Git-förvar
- 2.2 Spara ändringar till förvaret
- 2.3 Visa historiken
- 2.4 Ångra saker
- 2.5 Jobba med fjärrförvar
- 2.6 Taggning
- 2.7 Git alias
- 2.8 Sammanfattning
-
3. Git förgreningar
- 3.1 Grenar i ett nötskal
- 3.2 Grundläggande förgrening och sammanslagning
- 3.3 Hantera grenar
- 3.4 Arbetsflöde med grenar
- 3.5 Fjärrgrenar
- 3.6 Grenflytt
- 3.7 Sammanfattning
-
4. Git på servern
- 4.1 Protokollen
- 4.2 Skaffa Git på en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konvigurera servern
- 4.5 Git Daemonen
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Alternativ tillhandahållna av tredje part
- 4.10 Sammanfattning
-
5. Distribuerade Git
-
6. GitHub
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Bilaga A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in PowerShell
- A1.7 Summary
-
A2. Bilaga B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
4.6 Git på servern - Smart HTTP
Smart HTTP
Vi har nu autentiserad åtkomst genom SSH och icke-autentiserad åtkomst genom git://
men det fins också protokoll som kan göra båda saker samtidigt.
Att konfigurera Smart HTTP är praktiskt taget bara att tillåta ett CGI-skript som tillhandahålls tillsammans med Git som heter git-http-backend
på servern.
Detta CGI kommer läsa sökvägen och headers som skickas av git fetch
eller git push
till en HTTP URL och avgöra om klienten kan kommuniocera över HTTP (vilket stämmer för alla klienter sedan version 1.6.6).
Om CGI ser att klienten är smart, kommer den att kommunicera smart med den, annars kommer den falla tillbaka till det dumma beteendet (så den är bakåtkompatibel för läsning med äldre klienter).
Låt oss gå igenom en väldigt grundläggande konfiguration. Vi kommer att konfigurera detta med Apache som CGI-server. Om du inte har Apache så kan du installera det på en Linuxburk genom nåt liknande detta:
$ 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 detta skall fungera ordentligt.
DU kommer också behöva konfigurera Unixanvändargruppen för katalogerna /srv/git
till www-data
så att din webserver kan läsa och skriva till repona, eftersom Apacheinstansen som kör CGI-skriptet kommer (normalt) köras som den användaren:
$ chgrp -R www-data /srv/git
Nu behöver vi lägga till några rader i Apaches konfiguration för att köra git-http-backend
som hanterare för något som inkommer till /git
-sökvägen på webservern.
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 tillhandahålla repon med git-daemon-export-ok
-filen till icke-autentiserade klienter, precis som Gitdaemoenen gjorde.
Slutligen behöver du tala om för Apache att tillåta anrop till git-http-backend
och göra skrivningar autentiserade på något sätt, möjligtvis genom ett Auth-block som här:
<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>
Det kommer kräva att du skapar en .htpasswd
-fil som innehåller lösenorden av alla giltiga användare.
Här är ett exempel med att lägga till användaren “schacon” till filen:
$ htpasswd -c /srv/git/.htpasswd schacon
Det finns en mängd sätt att få Apache att autentisera användare, du måste välja och implementera en av dem. Detta är det enklaste exemplet vi kom på. Du kommer också med säkerhet vilja konfigurera SSL så att all data är krypterad.
Vi dyker inte så långt ner i kaninhålet när det kommer till specifika Apachekonfigurationer, eftersom du mycket väl kan använda en annan server eller ha andra autentiseringsbehov.
Iden är att Git kommer med ett CGI kallat git-http-backend
som, när det anrpoas, gör all förhandling för att skicka och ta emot data över HTTP.
Den implementerar inte själva autentiseringen, men det kan lätt kontrolleras av webbserverlagret som anropar den.
Du kan göra detta med nästan alla CGI-kapabla webservrar, så använd den som du känner till bäst.
Notera
|
För mer information om konfigurering av autentisering av Apache, läs Apachedokumentationen här:http://httpd.apache.org/docs/current/howto/auth.html[] |