-
1. Začetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Gita
- 1.3 Kaj je Git?
- 1.4 Ukazna vrstica
- 1.5 Namestitev Gita
- 1.6 Prva nastavitev Gita
- 1.7 Pridobivanje pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobivanje repozitorija Git
- 2.2 Snemanje sprememb v repozitorij
- 2.3 Pregled zgodovine potrditev
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Aliasi Git
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Poteki dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobitev Gita na strežniku
- 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 Možnosti gostovanja pri tretjih ponudnikih
- 4.10 Povzetek
-
5. Porazdeljeni Git
- 5.1 Porazdeljeni poteki dela
- 5.2 Prispevek k projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Izbira revizije
- 7.2 Interaktivno pripravljanje
- 7.3 Shranjevanje na varno (angl. stashing) in čiščenje
- 7.4 Podpisovanje vašega dela
- 7.5 Iskanje
- 7.6 Prepisovanje zgodovine
- 7.7 Demistifikacija ponastavitve
- 7.8 Napredno združevanje
- 7.9 Rerere
- 7.10 Razhroščevanje z Gitom
- 7.11 Podmoduli
- 7.12 Povezovanje v pakete
- 7.13 Zamenjava
- 7.14 Shramba poverilnic
- 7.15 Povzetek
-
8. Prilagoditev Gita
- 8.1 Konfiguracija Git
- 8.2 Atributi Git
- 8.3 Kljuke Git
- 8.4 Primer pravilnika, ki ga uveljavlja Git
- 8.5 Povzetek
-
9. Git in ostali sistemi
- 9.1 Git kot odjemalec
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Gita
- 10.1 Napeljava in keramika
- 10.2 Objekti Git
- 10.3 Reference Git
- 10.4 Packfiles (datoteke zmanjšanih podatkov)
- 10.5 Refspec
- 10.6 Protokoli prenosa
- 10.7 Vzdrževanje in obnovitev podatkov
- 10.8 Spremenljivke okolja
- 10.9 Povzetek
-
A1. Dodatek A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studio
- A1.3 Git v Visual Studio Code
- A1.4 Git v IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git v Sublime Text
- A1.6 Git v Bashu
- A1.7 Git v Zsh
- A1.8 Git v Powershellu
- A1.9 Povzetek
-
A2. Dodatek B: Vdelava Gita v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Dodatek C: Ukazi Git
- A3.1 Nastavitev in konfiguracija
- A3.2 Pridobivanje in ustvarjanje projektov
- A3.3 Osnove posnetkov
- A3.4 Veje in združevanje
- A3.5 Deljenje in posodabljanje projektov
- A3.6 Pregled in primerjava
- A3.7 Razhroščevanje
- A3.8 Popravljanje
- A3.9 E-pošta
- A3.10 Zunanji sistemi
- A3.11 Administracija
- A3.12 Orodja za sisteme napeljave
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 (angl. Smart HTTP) je v osnovi samo omogočenje skripta CGI, ki je ponujen z Gitom imenovanim git-http-backend
na strežniku.
Ta CGI bo prebral pot in glave, ki jih pošlje git fetch
ali git push
k HTTP URL in določa, ali lahko odjemalec komunicira preko HTTP (kar velja za kateregakoli odjemalca od različice 1.6.6).
Če CGI vidi, da je odjemalec pameten, bo z njim komuniciral pametno; drugače se bo vrnil k neumnemu (angl. dumb) obnašanju (tako, da je združljiv za nazaj za branje s starejšimi odjemalci).
Pojdimo skozi zelo osnovno nastavitev. To bomo nastavili z Apachejem kot strežnikom CGI. Če nimate nastavljenega Apacheja, lahko to naredite na napravi Linux nekako takole:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
To omogoči tudi module mod_cgi
, mod_alias
in mod_env
, ki so obvezni, da to ustrezno deluje.
Morali boste nastaviti uporabniško skupino Unix za direktorije /srv/git
na www-data
, da bo vaš spletni strežnik lahko dostopal do repozitorijev z branjem in pisanjem, saj se bo instanca Apache, ki poganja skripto CGI (privzeto), poganjala kot ta uporabnik:
$ chgrp -R www-data /srv/git
Naslednje moramo dodati nekaj stvari k Apache nastavitvi, da poženemo git-http-backend
kot krmilnik za karkoli, kar pride v pot /git
vašega spletnega strežnika.
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Če izpustite spremenljivko okolja GIT_HTTP_EXPORT_ALL
, bo Git stregel repozitorije samo neoverjenim odjemalcem z datoteko git-daemon-export-ok
v njih, tako kot to dela prikriti proces Git (angl. daemon).
Na koncu boste želeli povedati Apacheju, da dovoli zahtevke na git-http-backend
, in narediti pisanje nekako overjeno, verjetno z blokom Auth nekako takole:
<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>
To bo zahtevalo, da ustvarite datoteko .htaccess
, ki vsebuje gesla za vse veljavne uporabnike.
Tu je primer dodajanja uporabnika »schacon« k datoteki:
$ htpasswd -c /srv/git/.htpasswd schacon
Na voljo je tona načinov, kako narediti, da Apache overi uporabnike, izbrati in implementirati pa boste morali enega od njih. To je samo enostaven primer, ki nam ga uspe prikazati. Skoraj zagotovo boste tudi to nastavili preko SSL, da so vsi podatki šifrirani.
Ne želimo iti predaleč po zajčevi luknji nastavitvenih posebnosti Apache, ker lahko boste uporabljali drugačni strežnik ali pa imeli drugačne overitvene potrebe.
Ideja je, da Git prihaja s CGI-jem imenovanim git-http-backend
, kateri bo, ko je sklican, naredil vsa pogajanja, da pošilja in prejema podatke preko HTTP.
Sam po sebi ne implementira nikakršnega overjanja, vendar to je lahko enostavno krmiljeno na nivoju spletnega strežnika, ki ga prikliče.
To lahko naredite s skoraj katerimkoli spletnim strežnikom, ki zmore CGI, torej uporabite tistega, ki ga najbolj poznate.
Opomba
|
Za več informacij o nastavitvah overjanja v Apacheju, preverite dokumentacijo Apache tu: https://httpd.apache.org/docs/current/howto/auth.html. |