-
1. Pagsisimula
-
2. Mga Pangunahing Kaalaman sa Git
-
3. Pag-branch ng Git
-
4. Git sa Server
- 4.1 Ang Mga Protokol
- 4.2 Pagkuha ng Git sa isang Server
- 4.3 Ang paglikha ng iyong Pampublikong Susi ng SSH
- 4.4 Pag-Setup ng Server
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Mga Opsyon ng Naka-host sa Third Party
- 4.10 Buod
-
5. Distributed Git
- 5.1 Distributed Workflows
- 5.2 Contributing to a Project
- 5.3 Maintaining a Project
- 5.4 Summary
-
6. GitHub
-
7. Mga Git na Kasangkapan
- 7.1 Pagpipili ng Rebisyon
- 7.2 Staging na Interactive
- 7.3 Pag-stash at Paglilinis
- 7.4 Pag-sign sa Iyong Trabaho
- 7.5 Paghahanap
- 7.6 Pagsulat muli ng Kasaysayan
- 7.7 Ang Reset Demystified
- 7.8 Advanced na Pag-merge
- 7.9 Ang Rerere
- 7.10 Pagdebug gamit ang Git
- 7.11 Mga Submodule
- 7.12 Pagbibigkis
- 7.13 Pagpapalit
- 7.14 Kredensyal na ImbakanCredential Storage
- 7.15 Buod
-
8. Pag-aangkop sa Sariling Pangangailagan ng Git
- 8.1 Kompigurasyon ng Git
- 8.2 Mga Katangian ng Git
- 8.3 Mga Hook ng Git
- 8.4 An Example Git-Enforced Policy
- 8.5 Buod
-
9. Ang Git at iba pang mga Sistema
- 9.1 Git bilang isang Kliyente
- 9.2 Paglilipat sa Git
- 9.3 Buod
-
10. Mga Panloob ng GIT
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 Ang Refspec
- 10.6 Transfer Protocols
- 10.7 Pagpapanatili At Pagbalik ng Datos
- 10.8 Mga Variable sa Kapaligiran
- 10.9 Buod
-
A1. Appendix A: Git in Other Environments
- A1.1 Grapikal Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git sa Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git sa Powershell
- A1.7 Summary
-
A2. Appendix B: Pag-embed ng Git sa iyong Mga Aplikasyon
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Mga Kautusan ng Git
- A3.1 Setup at Config
- A3.2 Pagkuha at Paglikha ng Mga Proyekto
- A3.3 Pangunahing Snapshotting
- A3.4 Branching at Merging
- A3.5 Pagbabahagi at Pagbabago ng mga Proyekto
- A3.6 Pagsisiyasat at Paghahambing
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Pagtutuberong mga Utos
4.6 Git sa Server - Smart HTTP
Smart HTTP
Tayo ngayon ay may awtentik na pag-access sa pamamamgitan ng SSH at di awtentik na pag-access sa pamamagitan ng git://
, ngunit mayroon ding isang protokol na kung saan maaaring gawin ng sabay-sabay.
Ang pag-set up ng Smart HTTP ay pawang pagpapagana lang ng isang CGI script na may kasamang Git na tinatawag na git-http-backend sa server.
Babasahin ng CGI ang landas at mga header na ipinadala ng isang git fetch
o git push
sa anumang HTTP URL at tukuyin kung maaaring makipag-usap ang kliyente sa HTTP (na totoo para sa anumang kliyente mula noong beryson 1.6.6).
Kung makikita ng CGI na matalino ang kliyente, ito ay matalinong makikipag-usap dito; kung hindi man ito ay babalik sa pag-uugali ng pipi (so ito ay backward compatible para sa pagbasa sa mga luma na kliyente).
Daanan natin ang isang pangunahing pag-set up. Ise-set up natin to gamit ang Apache bilang isang CGI server. Kung wala kang Apache na naka-set up, magagawa mo ito sa isang kahon sa Linux na may ganito:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
Pinapayagan din nito ang mod_cgi
, mod_alias
, at mod_env
na mga modyul, lahat ito ay kinakailangan upang mapagana ng maayos.
Kailangan mo rin i-set ang grupo ng mangagamit ng Unix ng mga direktoryo ng /srv/git
sa www-data
upang mayroong mabasa- at pagsulat- na access sa mga repositoryo ang iyong web server, dahil ang instansya ng Apache na tumatakbo sa mga iskrip ng CGI ay (bilang default) tumatakbo bilang user na iyon.
$ chgrp -R www-data /srv/git
Sunod kailangan natin magdagdag ng mga bagay sa pagsasaayos ng Apache upang mapatakbo ang git-http-backend
bilang handler ng anuman na darating papasok sa /git
na landas ng iyong web server.
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Kung hindi mo isasali ang GIT_HTTP_EXPORT_ALL
na variable ng environment, pagkatapos ay ihahain lamang ng Git sa mga hindi awtentik na mga kliyente ang mga repositoryo na may git-daemon-export-ok
na file sa loob nila, pareho sa ginawa ng Git daemon.
Sa wakas nais mong sabihan ang Apache na pahintulutan ang mga request patungo sa git-http-backend
at maghanap ng paraan na gawing awtentik ang mga pagsulat, posible sa isang block ng Auth kagaya nito:
<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>
Kinakailangan nito na gumawa ka ng .htpasswd
na file na naglalaman ng mga password ng lahat ng mga balidong user.
Narito ang isang halimbawa ng pagdagdag ng isang “schacon” na user sa file:
$ htpasswd -c /srv/git/.htpasswd schacon
Mayroong toneladang paraan na kung saan masagawang awtenik ng Apache ang mga user, kailangan mong pumili ng isa at ipatupad ito. Ito ang pinakasimpleng halimbawa na maaari nating gawin. Makikita mo rin ang tiyak na nais na i-set up ito gamit ang SSL upang lahat ng data nito ay encrypted.
Hindi natin nais na talakayin ng malalim ang mga tiyak na pagsasaayos ng Apache, dahil maaaring gumagamit ka ng ibang server o ibang pangangailangan ng pagpapatunay.
Ang idea ay ang Git ay may kasamang isang CGI na ang tawag ay git-http-backend
na kung tinawag ay isasagawa ang lahat ng pag-aayos upang maipadala at matanggap ang mga datos gamit ang HTTP.
Wala itong pagpapatunay na isinasagawa, ngunit madali ito kontrolin sa layer ng web server na tumatawag nito.
Magagawa mo ito gamit ang halos anumang may kakayahan na CGI web server, so gamitin mo ang pinaka alam mo.
Para sa karagdagang impormasyon sa pagsasaayos ng pagpapatunay sa Apache, tingnan ang mga doc ng Apache dito: http://httpd.apache.org/docs/current/howto/auth.html