-
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.8 Bir Sunucuda Git Kurma - GitLab
GitLab
GitWeb oldukça basit olmasına rağmen, daha modern ve tam özellikli bir Git sunucusu arıyorsanız, onun yerine kurabileceğiniz birkaç açık kaynak çözümü bulunmaktadır. GitLab popüler olanlardan biri olduğu için, onu örnek olarak kurmayı ve kullanmayı ele alacağız. GitWeb seçeneğinden biraz daha karmaşık olmasına ve muhtemelen daha fazla bakım gerektirmesine karşın, çok daha kapsamlı bir seçenektir.
Kurulum
GitLab, veritabanı destekli bir ağ uygulaması olduğundan, kurulumu diğer bazı Git sunucularından biraz daha karmaşıktır. Neyse ki, bu süreç çok iyi belgelendirilmiştir ve desteklenmektedir.
GitLab’ı kurmak için takip edebileceğiniz birkaç yöntem bulunmaktadır. Çalışan bir şeyi hızlı bir şekilde kurmak için, bir sanal makine görüntüsü indirebilir veya https://bitnami.com/stack/gitlab adresinden tek tıkla kurabilir ve özel ortamınıza uygun şekilde yapılandırabilirsiniz. Bitnami’nin eklediği hoş bir özellik, giriş ekranıdır (alt+→ tuşlarını yazarak erişilir). Bu, yüklenmiş GitLab’ın IP adresini ve varsayılan kullanıcı ad ve şifresini size bildirir.
Başka bir şey için, GitLab Community Edition readme (beni-oku) dosyasındaki yönergeleri takip edin (bu dosyayı https://gitlab.com/gitlab-org/gitlab-ce/tree/master adresinde bulabilirsiniz). Buradaki şef tarifleri, Digital Ocean üzerinde bir sanal makine ile RPM ve DEB paketleri kullanarak (yazıldığı tarih itibariyle beta sürümünde olanlar) size GitLab’ı nasıl kuracağınıza dair yardım sulabilir. Ayrıca, standart olmayan işletim sistemleri ve veritabanlarıyla GitLab’ı çalıştırma, tamamen manuel bir kurulum betiği ve birçok başka konuyla ilgili "resmi olmayan" yönergeler bulabilirsiniz.
Yönetim
GitLab’ın yönetim arayüzüne ağ üzerinden erişilir.
Sadece tarayıcınızı GitLab’ın kurulu olduğu ana bilgisayar adına veya IP adresine yönlendirin ve bir yönetici kullanıcısı olarak oturum açın.
Varsayılan kullanıcı adı admin@local.host
ve varsayılan şifre 5iveL!fe
şeklindedir (şifreyi girdikten hemen sonra değiştirmeniz istenecektir).
Oturum açtıktan sonra, sağ üst köşede bulunan menüdeki "Yönetici Alanı" simgesine tıklayın.
Kullanıcılar
GitLab’deki kullanıcılar, insanlara karşılık gelen hesaplardır.
Kullanıcı hesapları çok karmaşık değildir: genellikle, giriş verilerine eklenmiş kişisel bilgilerin bir koleksiyonudur.
Her kullanıcı hesabı, o kullanıcıya ait projelerin mantıksal bir gruplaması olan bir adalanı (namespace) ile gelir.
Eğer mehmet
kullanıcısının projem
adında bir projesi olsaydı, o proje’nin URL’si http://sunucu/mehmet/projem
olurdu.
Bir kullanıcıyı kaldırmak iki şekilde yapılabilir: Bir kullanıcıyı "engellemek", onların GitLab örneğine giriş yapmasını engeller, ancak o kullanıcının adalanı altındaki tüm veriler korunur ve o kullanıcının e-posta adresiyle imzalanan katkılar hala profiliyle bağlantılıdır.
Öte yandan, bir kullanıcıyı "silmek", onu tamamen veritabanından ve dosya sisteminden kaldırır. Adalanı altındaki tüm projeler ve veriler, sahip oldukları tüm gruplarla birlikte kaldırılır. Bu açıkça çok daha kalıcı ve yıkıcı bir işlem olduğu için kullanımı nadirdir.
Gruplar
Bir GitLab grubu bir projeler topluluğudur ve kullanıcıların bu projelere nasıl erişebileceği hakkında veriler içerir.
Her grup (kullanıcılar gibi) bir proje adalanına sahiptir, bu nedenle training
adında bir grup materials
adında bir projeye sahipse, URL’si http://sunucu/training/materials
olur.
Her bir grup, grubun kendisine ve projelerine, belli bir düzeyde erişim iznine sahip, bir dizi kullanıcı ile ilişkilidir. Bu izinler, "Misafir" (yalnızca konu ve sohbet) ile "Sahip" (grubun, üyelerin ve projelerin tam denetimi) arasında değişmektedir. İzin türleri burada listelenmek için fazla sayıda, ancak GitLab’ın yönetim ekranında yardımcı bir bağlantı bulunmaktadır.
Projeler
Bir GitLab projesi yaklaşık olarak tek bir Git reposuna karşılık gelir. Her proje, bir kullanıcı veya bir grup olmak üzere tek bir adalanına aittir. Proje bir kullanıcıya aitse, projenin sahibi projeye kimin erişebileceğini doğrudan kontrol eder. Eğer proje bir gruba aitse, grup düzeyindeki kullanıcı izinleri de etkili olacaktır.
Her proje ayrıca bir görünürlük seviyesine sahiptir, bu da projenin sayfalarına ve reposuna kimlerin okuma erişimine sahip olduğunu denetler.
Bir proje Private (özel) ise, proje sahibi belirli kullanıcılara erişimi açıkça vermelidir.
Internal (iç) bir proje sadece oturum açmış her kullanıcı tarafından görülebilir, Public (açık) bir proje ise herkese görünür.
Unutmayın ki, bu hem git fetch
erişimini hem de o projenin web arayüzüne erişimi kontrol eder.
Kancalar (Hooks)
GitLab, hem proje ve hem de sistem düzeyinde kancaları destekler. Her ikisi için de, ilgili olaylar meydana geldiğinde GitLab sunucusu açıklamacı JSON ile bir HTTP POST gerçekleştirir. Bu, Git repolarınızı ve GitLab örneğinizi, CI sunucuları, sohbet odaları veya dağıtım araçları gibi geliştirme otomasyonunuzun geri kalanına bağlamanın harika bir yoludur.
Basit Kullanım
GitLab’da yapmak isteyeceğiniz ilk şey yeni bir proje oluşturmaktır. Bunu, araç çubuğundaki ``+`` simgesine tıklayarak yapabilirsiniz. Projenin adı, hangi adalanına ait olması gerektiği ve görünürlük seviyesinin ne olması gerektiği sorulacaktır. Burada belirttiğiniz çoğu şey kalıcı değildir ve daha sonra ayarlar arayüzü üzerinden yeniden ayarlanabilir. ``Create Project``e (proje oluştur) tıklayın ve işlem tamamdır.
Proje oluştuktan sonra, muhtemelen yerel bir Git reposuyla bağlantı kurmak isteyeceksiniz.
Her proje HTTPS veya SSH üzerinden erişilebilirdir ve her ikisi de bir Git uzak sunucusu yapılandırmak için kullanılabilir.
URL’ler, proje ana sayfasının üstünde görünür.
Bu komut mevcut bir yerel repo için barındırılan konuma gitlab
adında bir uzak sunucu oluşturacaktır:
$ git remote add gitlab https://server/namespace/project.git
Eğer reponuzun yerel bir kopyası yoksa, bunu sadece şu şekilde yapabilirsiniz:
$ git clone https://server/namespace/project.git
Ağ arayüzü reponun kendisine ait bazı kullanışlı görüntülere erişim sağlar. Her proje ana sayfası, son etkinliği gösterir ve üst kısımdaki bağlantılar, proje dosyalarının ve işlem günlüğün görüntülerine yönlendirir.
Birlikte Çalışma
Bir GitLab projesinde birlikte çalışmanın en basit yolu, başka bir kullanıcıya Git reposuna doğrudan itme erişimi vermektedir. Bunu yapmak için, o projenin ayarlarında "Üyeler" bölümüne giderek yeni kullanıcıyı bir erişim seviyesi ile ilişkilendirebilirsiniz (farklı erişim seviyeleri konusuna Gruplar bölümünde biraz girilmiştir). "Geliştirici" veya daha üst bir erişim seviyesi verilen bir kullanıcı o repoya gelişigüzel olarak doğrudan işlemler ve dallar ekleyebilir.
Daha bağımsız bir işbirliği yöntemi de "birleştirme isteklerini" kullanmaktır.
Bu özellik, bir projeyi görebilen herhangi bir kullanıcının, denetimli bir şekilde katkıda bulunmasını sağlar.
Doğrudan erişimi olan kullanıcılar basitçe bir dal oluşturabilir, işlemleri ona iter ve dallarından master
veya başka bir dala birleştirme isteği açabilir.
Depoya itme izinleri olmayan kullanıcılar onu "çatallayabilir" (kendi kopyalarını oluşturabilir), işlemleri bu kopyaya iter ve kendi çatalından ana projeye birleştirme isteği açabilir.
Bu model "güvenilmeyen kullanıcılardan" katkı alınmasına olanak tanırken, sahibin (owner) de repoya neyin, ne zaman gireceği konusunda tam bir kontrol sahibi olmasını sağlar.
Birleştirme istekleri ve konular, GitLab’da uzun süreli tartışmanın ana birimleridir. Her birleştirme isteği, önerilen değişikliğin satır bazında tartışılmasına (hafif bir kod incelemesi) ve genel bir genel tartışma başlığına izin verir. Her ikisi de kullanıcılara atanabilir veya kilometre taşlarına düzenlenebilir.
Bu bölüm, öncelikle GitLab’ın Git ile ilgili özelliklerine odaklanmış olsa da, olgun bir proje olarak, ekibinizin birlikte çalışmasına yardımcı olacak birçok başka özellik de sunar (örneğin proje vikileri ve sistem bakım araçları). GitLab’ın bir avantajı da sunucu kurulup ve çalıştırıldığı zaman, nadiren bir yapılandırma dosyasını ayarlamak veya sunucuya SSH üzerinden erişmek gibi bir ihtiyacınızın olmamasıdır. Çoğu yönetim ve genel kullanım, tarayıcı tabanlı arayüz üzerinden gerçekleştirilebilir.