Git
Chapters ▾ 2nd Edition

4.8 Git on the Server - 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.

Bitnami GitLab sanal makine giriş ekranı.
Görsel 50. Bitnami GitLab sanal makine giriş ekranı.

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.

GitLab menüsündeki "Yönetici Alanı" ögesi.
Görsel 51. GitLab menüsündeki "Yönetici Alanı" ögesi.

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.

GitLab kullanıcı yönetim ekranı.
Görsel 52. GitLab kullanıcı yönetim ekranı.

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.

GitLab grup yönetim ekranı.
Görsel 53. GitLab grup yönetim ekranı.

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.

scroll-to-top