-
1. Početak
- 1.1 O kontroli verzije
- 1.2 Kratka istorija Gita
- 1.3 Osnove Gita
- 1.4 Komandna linija
- 1.5 Instaliranje Gita
- 1.6 Podešavanja za prvi put
- 1.7 Traženje pomoći
- 1.8 Rezime
-
2. Osnove Gita
- 2.1 Pravljenje Git repozitorijuma
- 2.2 Snimanje promena na repozitorijumu
- 2.3 Pregled istorije komitova
- 2.4 Opovrgavanje
- 2.5 Rad sa udaljenim repozitorijumima
- 2.6 Tagovanje
- 2.7 Alijasi
- 2.8 Rezime
-
3. Grananje u Gitu
- 3.1 Grananje ukratko
- 3.2 Osnove grananja i spajanja
- 3.3 Upravljanje granama
- 3.4 Tokovi rada sa grananjem
- 3.5 Udaljene grane
- 3.6 Rebaziranje
- 3.7 Rezime
-
4. Git on the Server
- 4.1 Protokoli
- 4.2 Postavljanje Gita na server
- 4.3 Generisanje javnog SSH ključa
- 4.4 Podešavanje servera
- 4.5 Git Daemon
- 4.6 Pametan HTTP
- 4.7 GitWeb
- 4.8 Opcije za hostovanje koje nude treća lica
- 4.9 Rezime
-
5. Distribuirani Git
- 5.1 Distribuirani tokovi rada
- 5.2 Kako doprineti projektu
- 5.3 Održavanje projekta
- 5.4 Rezime
-
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. Prilagođavanje Gita
- 8.1 Konfiguracija Gita
- 8.2 Git atributi
- 8.3 Git hukovi
- 8.4 Primer polise sprovedene od strane Gita
- 8.5 Rezime
-
9. Git i ostali sistemi
- 9.1 Git kao klijent
- 9.2 Migriranje na Git
- 9.3 Rezime
-
10. Git iznutra
- 10.1 Vodovod i porcelan
- 10.2 Git objekti
- 10.3 Git reference
- 10.4 Paketoteke
- 10.5 Refspek
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Appendix 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. Appendix B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix 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 on the Server - Pametan HTTP
Pametan HTTP
Sada imamo autentifikovan pristup preko SSH-a i neautentifikovan pristup preko git://
, ali postoji i protokol koji može raditi oba istovremeno.
Podešavanje Pametnog HTTP-a se u principu svodi na dozvolu izvršenja CGI skripte koja je dostupna uz git u folderu git-hzzp-backend
na serveru.
Ovaj CHI će pročitati putanju i zaglavalja koje pošalju git fetch
ili git push
na HTTP URL i odrediti da li klijent može da komunicira preko HTTP-a (što je tačno za svakog klijenta počev od verzije 1.6.6).
Ako CGI vidi da je klijent pametan, komuniciraće s njim na pametan način, inače će mu pristupiti priglupo (kako bi bio kompatibilan sa za čitanje sa starijim verzijama klijenata).
Pogledajmo kako se vrše postavke ovoga. Korisićemo Apache kao CHI server. Ako nemate Apache podešen, ovo možete uraditi i preko Linuks boksa na sledeći način:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env rewrite
Ovo takođe omogućuje module mod_cgi
, mod_alias
, mod_env
, and mod_rewrite
, koji su svi neophodni za neometani rad.
Moraćete i da podesite Linuks grupu korisnika direktorijuma srv/git
na www-data
kako bi vaš veb-server mogao da ima pristup za čitanje i pisanje ka repozitorijumima, jer će instance Apache-a koja pokerće CGI skriptu (po podrazumevanim podešavanjima) biti pokrenuta kao taj korisnik:
$ chgrp -R www-data /opt/git
Sledeće što treba da uradimo jeste da dodamo neke stvari u Apache konfiguraciju kako bismo pokrenuli git-http-backend
kao rukovodilac za sve što dođe na /git
putanju vašeg veb-servera.
SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Ako izostavite promenljivu okruženja GIT_HTTP_EXPORT_ALL
, Git će neautentifikovanim klijentima pružati samo repozitorijume koje u sebi imaju datoteku git-deamon-export-ok
, baš kao što je bio slučaj kod Git demona.
Za kraj, želećete da kažete Apache-u da dozvoli pristup git-http-backend
-u i da učini upis da bude nekako autentifikovan, na primer Auth blokom na sledeći način:
RewriteEngine On
RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]
RewriteCond %{REQUEST_URI} /git-receive-pack$
RewriteRule ^/git/ - [E=AUTHREQUIRED]
<Files "git-http-backend">
AuthType Basic
AuthName "Git Access"
AuthUserFile /opt/git/.htpasswd
Require valid-user
Order deny,allow
Deny from env=AUTHREQUIRED
Satisfy any
</Files>
Ovo će od vas zahtevati da napravite datoteku .htpasswd
koja sadrži šifre svih validnih korisnika.
Evo primera dodavanja korisnika "schacon" u taj fajl:
$ htpasswd -c /opt/git/.htpasswd schacon
Ima mnogo načina da Apache autentifikuje korisnike, i moraćete da izabere i implementirate jedan od njih. Ovo je samo najjednostavniji primer koji nam je pao na pamet. Skoro sigurno ćete ovo želeti da podesite preko SSL-a kako bi svi podaci bili enkriptovani.
Ne želimo da se previše upuštmo u specifičnosti konfiguracije Apache-a, pošto možete da koristite i drugi server ili da imate drugačije poterbe za autentifikacijom.
Ideja je da Git dolazi uz CGI koji se naziva git-http-backend
koji će obaviti sve neophodne pregovore o slanju i primanju podataka preko HTTP-a kada se pokrene.
On kao takav ne implementira autentifikaciju, ali to se jednostavno može kontrolisati na sloju veb-servera koji ga poziva.
To možete uraditi na skoro svakom veb-serveru koji ima podršku za CGI, tako da je najbolje da izaberete onaj koji već dobro poznajete.
Note
|
Za više inforamcija o konfiguraciji autentifikacije u Apache-u, pogledajte Apache-ovu dokumentaciju ovde: http://httpd.apache.org/docs/current/howto/auth.html |