-
1. Pričetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Git-a
- 1.3 Osnove Git
- 1.4 The Command Line
- 1.5 Git namesitev
- 1.6 Prva namestitev Git-a
- 1.7 Pridobitev pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobitev repozitorija Git
- 2.2 Snemanje sprememb repozitorija
- 2.3 Pregled zgodovine pošiljanja
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Git aliasi
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Potek dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje (rebasing)
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobiti Git na strežnik
- 4.3 Generiranje vaših javnih ključev SSH
- 4.4 Nastavitev strežnika
- 4.5 Prikriti proces Git
- 4.6 Pametni HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Tretje osebne opcije gostovanja
- 4.10 Povzetek
-
5. Distribuirani Git
- 5.1 Distribuirani poteki dela
- 5.2 Prispevanje projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 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 Povzetek
-
8. Prilagoditev Git-a
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git kljuke
- 8.4 An Example Git-Enforced Policy
- 8.5 Povzetek
-
9. Git in drugi sistemi
- 9.1 Git kot klient
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Git-a
- 10.1 Napeljava in porcelan
- 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 Povzetek
-
A1. Appendix A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studiu
- A1.3 Git v Eclipse
- A1.4 Git V Bash-u
- A1.5 Git v Zsh
- A1.6 Git v Powershell-u
- A1.7 Povzetek
-
A2. Appendix B: Vključevanje Git-a v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- 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 na strežniku - Pametni HTTP
Pametni HTTP
Sedaj imamo overjen dostop preko SSH in neoverjen dostop preko git://
, vendar obstaja tudi protokol, ki lahko naredi oboje istočasno.
Nastavitev pametnega HTTP je v osnovi samo omogočenje skripte CGI, ki je ponujena z Git-om imenovanim git-http-backend
na strežniku.
Ta CGI bo prebral pot in glave poslane, ki jih pošlje git fetch
ali git push
k HTTP UTL in določa, če klient lahko komunicira preko HTTP (kar je res za kateregakoli klienta od verzije 1.6.6).
Če CGI vidi, da je klient pameten, bo z njim komuniciral pametno, drugače se bo vrnil k neumnemu obnašanju (tako, da je združljiv za nazaj za branje z starejšimi klienti).
Pojdimo skozi zelo osnovno nastavitev. To bomo nastavili z Apache-jem kot strežnikom CGI. Če nimate nastavitve Apache, lahko to naredite na Linux napravi nekako takole:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
To tudi omogoči module mod_cig
, mod_alias
in mod_env
, ki so potrebni, da to ustrezno deluje.
Naslednje moramo dodati nekaj stvari k Apache nastavitvi, da poganja git-http-backend
kot handler za karkoli, kar pride v pot /git
vašega spletnega strežnika.
SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Če izpustite GIT_HTTP_EXPORT_ALL
spremenljivko okolja, potem bo Git serviral samo neoverjenim klientom repozitorije z git-daemon-export-ok
datoteko v njih, tako kot to dela Git prikriti proces (daemon).
Potem boste morali povedati Apache-ju, da omogoča zahtevke k tej poti z nečim takim:
<Directory "/usr/lib/git-core*">
Options ExecCGI Indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
Končno boste želeli narediti pisanja, da so nekako overjena, možno z Auth blokom takole:
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
AuthUserFile /opt/git/.htpasswd
Require valid-user
</LocationMatch>
To bo zahtevalo, da ustvarite .htaccess
datoteko, ki vsebuje gesla za vse veljavne uporabnike. Tu je primer dodajanja uporabnika “schacon” datoteki:
$ htdigest -c /opt/git/.htpasswd "Git Access" schacon
Na voljo je tona načinov imetja Apache overjenih uporabnikov, izbrati in implementirati boste morali enega od njih. To je samo enostaven primer, ki smo ga lahko prikazali. Skoraj zagotovo boste želeli to nastaviti tudi preko SSL, da so vsi podatki šifrirani.
Ne želimo iti predaleč po zajčevi luknji Apache nastavitvenih specifik, ker lahko boste uporabljali drugačni strežnik ali imeli različne overitvene potrebe. Ideja je, da Git prihaja s CGI-jem imenovanim git-http-backend
, ki ko je sklican bo naredil vsa pogajanja, da pošiljajo in prejemajo podatke preko HTTP. Ne implementira kakršnegakoli overjanja sam po sebi, vendar to je lahko enostavno kontrolirano na nivoju spletnega strežnika, ki je sklican. To lahko naredite s skoraj katerimkoli CGI-zmožnim spletnim strežnikom, torej pojdite s tistim, ki ga najbolj poznate.
Note
|
Za več informacij o nastavitvah overjanja v Apache-ju, preverite dokumentacijo Apache tu: http://httpd.apache.org/docs/current/howto/auth.html |