-
1. Başlanğıc
- 1.1 Versiyaya Nəzarət Haqqında
- 1.2 Git’in Qısa Hekayəsi
- 1.3 Git Nədir?
- 1.4 Əmr Sətiri
- 1.5 Git’i Quraşdırmaq
- 1.6 İlk Dəfə Git Quraşdırması
- 1.7 Kömək Almaq
- 1.8 Qısa Məzmun
-
2. Git’in Əsasları
-
3. Git’də Branch
- 3.1 Nutshell’də Branch’lar
- 3.2 Sadə Branching və Birləşdirmə
- 3.3 Branch İdarəedilməsi
- 3.4 Branching İş Axınları
- 3.5 Uzaq Branch’lar
- 3.6 Rebasing
- 3.7 Qısa Məzmun
-
4. Server’də Git
- 4.1 Protokollar
- 4.2 Serverdə Git Əldə Etmək
- 4.3 Sizin öz SSH Public Key’nizi yaratmaq
- 4.4 Server qurmaq
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Üçüncü Tərəf Seçimləri
- 4.10 Qısa Məzmun
-
5. Paylanmış Git
-
6. GitHub
-
7. Git Alətləri
- 7.1 Reviziya Seçimi
- 7.2 Interaktiv Səhnələşdirmə
- 7.3 Stashing və Təmizləmə
- 7.4 İşinizin İmzalanması
- 7.5 Axtarış
- 7.6 Tarixi Yenidən Yazmaq
- 7.7 Reset Demystified
- 7.8 İnkişaf etmiş Birləşmə
- 7.9 Rerere
- 7.10 Git ilə Debugging
- 7.11 Alt Modullar
- 7.12 Bundling
- 7.13 Dəyişdirmək
- 7.14 Etibarlı Yaddaş
- 7.15 Qısa Məzmun
-
8. Git’i Fərdiləşdirmək
- 8.1 Git Konfiqurasiyası
- 8.2 Git Atributları
- 8.3 Git Hook’ları
- 8.4 Git-Enforced Siyasət Nümunəsi
- 8.5 Qısa Məzmun
-
9. Git və Digər Sistemlər
- 9.1 Git Müştəri kimi
- 9.2 Git’ə Miqrasiya
- 9.3 Qısa Məzmun
-
10. Git’in Daxili İşləri
- 10.1 Plumbing və Porcelain
- 10.2 Git Obyektləri
- 10.3 Git Referansları
- 10.4 Packfile’lar
- 10.5 Refspec
- 10.6 Transfer Protokolları
- 10.7 Maintenance və Məlumatların Bərpası
- 10.8 Mühit Dəyişənləri
- 10.9 Qısa Məzmun
-
A1. Appendix A: Digər Mühitlərdə Git
- A1.1 Qrafik interfeyslər
- A1.2 Visual Studio’da Git
- A1.3 Visual Studio Code’da Git
- A1.4 Eclipse’də Git
- A1.5 Sublime Text’də Git
- A1.6 Bash’da Git
- A1.7 Zsh’də Git
- A1.8 PowerShell’də Git
- A1.9 Qısa Məzmun
-
A2. Appendix B: Proqramlara Git Daxil Etmək
- A2.1 Əmr-sətri Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Appendix C: Git Əmrləri
- A3.1 Quraşdırma və Konfiqurasiya
- A3.2 Layihələrin Alınması və Yaradılması
- A3.3 Sadə Snapshotting
- A3.4 Branching və Birləşmə
- A3.5 Layihələrin Paylaşılması və Yenilənməsi
- A3.6 Yoxlama və Müqayisə
- A3.7 Debugging
- A3.8 Patching
- A3.9 E-poçt
- A3.10 Xarici Sistemlər
- A3.11 İdarəetmə
- A3.12 Plumbing Əmrləri
4.6 Server’də Git - Smart HTTP
Smart HTTP
İndi SSH vasitəsilə autentifikasiya edilmiş giriş və git://
vasitəsilə təsdiqlənməmiş bir giriş əldə etdik, eyni zamanda hər ikisini eyni anda edə biləcək bir protokol da var.
Smart HTTP qurmaq, sadəcə serverdə git-http-backend
adlı Git ilə təmin olunan CGI skriptini təmin etməkdir.
Bu CGI git fetch
və ya git push
tərəfindən göndərilən path və başlıqları bir HTTP URL-ə oxuyacaq və müştərinin HTTP ilə əlaqə qura biləcəyini müəyyən edəcək(bu 1.6.6 versiyasından bəri hər hansı bir müştəri üçün doğrudur).
CGI müştərinin ağıllı olduğunu görsə, onunla ağıllı əlaqə quracaq; əks təqdirdə lal davranışa geri dönəcəkdir.(buna görə köhnə müştərilərlə oxunuş geriyə uyğundur).
Gəlin çox təməl və sadə quruluşdan danışaq. Bunu Apache ilə CGI server olaraq quracağıq. Apache quruluşunuz yoxdursa, bunu Linux qutusunda bu kimi bir şeylə edə bilərsiniz:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
Bu da lazımi şəkildə işləməsi üçün lazım olan mod_cgi
, mod_alias
və mod_env
modullarına imkan verir.
Ayrıca /srv/git
qovluqlarının Unix istifadəçi qrupunu www-data
olaraq təyin etməlisiniz, beləliklə veb serveriniz depoları oxuya və yaza bilərsiniz, çünki CGI skriptini işlədən Apache nümunəsi ( default olaraq) həmin istifadəçi kimi çalışır:
$ chgrp -R www-data /srv/git
Bundan sonra veb serverinizin /git
yoluna girən bir şey üçün işçi olaraq git-http-backend
işlətmək üçün Apache konfiqurasiyasına bəzi şeylər əlavə etməliyik.
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Əgər siz GIT_HTTP_EXPORT_ALL
mühit dəyişkənliyini kənara qoyursunuzsa, Git yalnız Git demonunda olduğu kimi təsdiqlənməmiş müştərilərə git-daemon-export-ok
faylı olan depoları təmin edəcəkdir.
Nəhayət, Apache-yə git-http-backend
sorğularına icazə verməsini və yazıların müəyyən bir şəkildə doğrulanmasını, bəlkə də bu kimi bir Auth bloku ilə etməsini istəməlisiniz:
<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>
Bütün etibarlı istifadəçilərin şifrələrini ehtiva edən bir “.htpasswd` faylını yaratmağı tələb edəcəkdir. ``schacon” istifadəçisini fayla əlavə etmək nümunəsi belədir:
$ htpasswd -c /srv/git/.htpasswd schacon
Apache identifikasiyası istifadəçilərinə sahib olmaq üçün bir çox yol var, onlardan hər hansı birini seçib uygulamalısınız. Bu, gələ biləcəyimiz ən sadə nümunədir. Bütün məlumatların şifrələnməsi üçün bunu SSL üzərində qurmaq istəyəcəksiniz.
Apache konfiqurasiya xüsusiyyətlərinin rabbit hole-undan çox uzaqlaşmaq istəmirik, çünki fərqli bir serverdən istifadə edə və ya fərqli identifikasiyaya ehtiyacınız ola bilər.
Fikir budur ki, Git git-http-backend
adlı bir CGI ilə birlikdə HTTP üzərindən məlumat göndərmək və qəbul etmək üçün bütün danışıqları aparacaqdır.
Heç bir identifikasiyanı özü həyata keçirmir, ancaq onu çağıran veb serverin qatında asanlıqla idarə oluna bilər.
Bunu hər hansı bir CGI bacarıqlı bir veb serveri ilə edə bilərsiniz, ona görə ən yaxşı bildiyiniz biri ilə dəvam edin.
Note
|
Apache-də identifikasiyanı konfiqurasiya etmək haqqında daha çox məlumat üçün Apache sənədlərini buradan yoxlaya bilərsiniz: https://httpd.apache.org/docs/current/howto/auth.html |