-
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
-
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[] |