-
1. Başlangıç
- 1.1 Sürüm Denetimi
- 1.2 Git’in Kısa Tarihçesi
- 1.3 Git Nedir?
- 1.4 Komut Satırı
- 1.5 Git’i Yüklemek
- 1.6 Git’i İlk Defa Kurmak
- 1.7 Yardım Almak
- 1.8 Özet
-
2. Git Temelleri
-
3. Git Dalları
- 3.1 Dallar
- 3.2 Kısaca Dallandırma ve Birleştirme Temelleri
- 3.3 Dal Yönetimi
- 3.4 İş Akışı Dallandırması
- 3.5 Uzak Dallar
- 3.6 Yeniden Temelleme (rebase)
- 3.7 Özet
-
4. Bir Sunucuda Git Kurma
- 4.1 İletişim Kuralları (Protocols)
- 4.2 Bir Sunucuda Git Kurma
- 4.3 SSH Ortak Anahtarınızı Oluşturma
- 4.4 Sunucu Kurma
- 4.5 Git Cini (Daemon)
- 4.6 Akıllı HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Üçüncü Taraf Barındırma (Hosting) Seçenekleri
- 4.10 Özet
-
5. Dağıtık Git
- 5.1 Dağıtık İş Akışları
- 5.2 Projenin Gelişiminde Rol Almak
- 5.3 Bir Projeyi Yürütme
- 5.4 Özet
-
6. GitHub
- 6.1 Bir Projeye Katkıda Bulunmak
- 6.2 Proje Bakımı
- 6.3 Kurumsal Yönetim
- 6.4 GitHub’ı otomatikleştirme
- 6.5 Özet
-
7. Git Araçları
- 7.1 Düzeltme Seçimi
- 7.2 Etkileşimli İzlemleme (Staging)
- 7.3 Saklama ve Silme
- 7.4 Çalışmanızı İmzalama
- 7.5 Arama
- 7.6 Geçmişi Yeniden Yazma
- 7.7 Reset Komutunun Gizemleri
- 7.8 İleri Seviye Birleştirme
- 7.9 Rerere
- 7.10 Git’le Hata Ayıklama
- 7.11 Alt Modüller
- 7.12 Demetleme (Bundling)
- 7.13 Git Nesnesini Değiştirme
- 7.14 Kimlik Bilgisi Depolama
- 7.15 Özet
-
8. Git’i Özelleştirmek
- 8.1 Git Yapılandırması
- 8.2 Git Nitelikleri
- 8.3 Git Kancaları (Hooks)
- 8.4 Bir Örnek: Mecburi Git Politikası
- 8.5 Özet
-
9. Git ve Diğer Sistemler
- 9.1 İstemci Olarak Git
- 9.2 Git’e Geçiş
- 9.3 Özet
-
10. Dahili Git Ögeleri
- 10.1 Tesisat ve Döşeme (Plumbing ve Porcelain)
- 10.2 Git Nesneleri
- 10.3 Git Referansları
- 10.4 Packfiles
- 10.5 Refspec
- 10.6 Transfer Protokolleri
- 10.7 Bakım ve Veri Kurtarma
- 10.8 Ortam Değişkenleri
- 10.9 Özet
-
A1. Ek bölüm A: Diğer Ortamlarda Git
- A1.1 Görsel Arayüzler
- A1.2 Visual Studio ile Git
- A1.3 Visual Studio Code ile Git
- A1.4 Eclipse ile Git
- A1.5 Sublime Text ile Git
- A1.6 Bash ile Git
- A1.7 Zsh ile Git
- A1.8 PowerShell ile Git
- A1.9 Özet
-
A2. Ek bölüm B: Git’i Uygulamalarınıza Gömmek
- A2.1 Git Komut Satırı
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Ek bölüm C: Git Komutları
- A3.1 Kurulum ve Yapılandırma Komutları
- A3.2 Proje Oluşturma Komutları
- A3.3 Kısaca Poz (Snapshot) Alma
- A3.4 Dallandırma ve Birleştirme Komutları
- A3.5 Projeleri Paylaşma ve Güncelleme Komutları
- A3.6 İnceleme ve Karşılaştırma Komutları
- A3.7 Hata Ayıklama (Debugging) Komutları
- A3.8 Yamalama (Patching)
- A3.9 E-Posta Komutları
- A3.10 Harici Sistemler
- A3.11 Yönetim
- A3.12 Tesisat (Plumbing) Komutları
4.6 Bir Sunucuda Git Kurma - Akıllı HTTP
Akıllı HTTP
Şimdi hem SSH üzerinden kimlik doğrulamalı erişim hem de git://
üzerinden kimlik doğrulamasız erişimimiz var, ancak aynı anda her ikisini de yapabilen bir protokol de bulunmaktadır.
Akıllı HTTP’yi kurmak temel olarak sunucuda Git ile birlikte gelen git-http-backend
adlı bir CGI betiğini etkinleştirmektir.
Bu CGI bir git fetch
veya git push
'un bir HTTP URL’sine gönderdiği dizin ve başlıkları okur ve istemcinin HTTP üzerinden iletişim kurup kuramayacağını belirler (1.6.6 sürümünden itibaren tüm istemciler için doğrudur).
CGI istemcinin akıllı olduğunu görürse onunla akıllı iletişim kurar, aksi takdirde (daha eski istemcilerle geriye dönük uyumluluk için) aptal davranışa geri döner.
Hadi şimdi çok temel bir kurulumu inceleyelim. Bunu Apache’yi CGI sunucusu olarak kullanarak yapacağız. Eğer Apache kurulumunuz yoksa, Linux üzerinde şöyle bir şey yapabilirsiniz:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
Bu aynı zamanda bunun düzgün çalışabilmesi için gereken mod_cgi
, mod_alias
ve mod_env
modüllerini de etkinleştirir.
Ayrıca, /srv/git
dizinlerinin Unix kullanıcı grubunu www-data
olarak ayarlamanız gerekecektir.
Böylece web sunucunuz repoları okuma ve yazma erişimine sahip olabilir, çünkü CGI betiğini çalıştıran Apache örneği (varsayılan olarak) bu kullanıcı olarak çalışacaktır:
$ chgrp -R www-data /srv/git
Şimdi, Apache yapılandırmasına bazı şeyler ekleyelim ki git-http-backend
'i web sunucunuzun /git
dizinine gelen her şey için işleyici olarak çalıştırsın.
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Eğer GIT_HTTP_EXPORT_ALL
ortam değişkenini çıkartırsanız, Git (tam olarak Git daemon’ın yaptığı gibi) yalnızca git-daemon-export-ok
dosyasına sahip olan repoları kimlik doğrulamasız istemcilere sunacaktır.
Son olarak, Apache’ye git-http-backend
'e olan isteklere izin vermesini ve yazma işlemlerinin bir şekilde kimlik doğrulanmasını yapmasını isteyeceksiniz, muhtemelen şu şekilde bir Auth bloğu ile:
<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>
Bu geçerli tüm kullanıcıların şifrelerini içeren bir .htpasswd
dosyası oluşturmanızı gerektirecektir.
İşte dosyaya bir ``schacon`` kullanıcısı eklemenin bir örneği:
$ htpasswd -c /srv/git/.htpasswd schacon
Apache’in kullanıcıların kimliğini doğrulaması için birçok yöntemi bulunmaktadır, bunlardan birini seçip uygulamanız gerekecektir. Bulabildiğimiz en basit örnek budur. Ayrıca muhtemelen tüm bu verilerin şifrelenmesi için bunu SSL üzerinden kurmak isteyeceksiniz.
Apache yapılandırma detaylarına fazla girmek istemiyoruz, çünkü muhtemelen farklı bir sunucu kullanıyor olabilirsiniz veya farklı kimlik doğrulama ihtiyacınız olabilir.
Fikir, Git’in çağrıldığında HTTP üzerinden veri gönderme ve alma işlemlerini yürütecek git-http-backend
adlı bir CGI ile birlikte gelmesidir.
Kendi başına kimlik sormaz, ancak kendini çağıran web sunucu katmanında kolayca kontrol edilebilir.
Bu neredeyse CGI yetenekli her web sunucusuyla yapılabilir, bu nedenle en iyi bildiğiniz sunucu ile devam edin.
Not
|
Apache’de kimlik doğrulama yapılandırması hakkında daha fazla bilgi için Apache kılavuzunu buradan kontrol edebilirsiniz: https://httpd.apache.org/docs/current/howto/auth.html |