Geçtiğimiz günlerde kod depolarımızı GitHub üzerinden GitLab’a taşımaya karar verdik. Bu süreçte iki platform arasındaki farklılıkları ve ortak noktaları belirleyip, hangisinin ihtiyaçlarımızı daha iyi karşılayabileceğine karar vermemiz gerekiyordu.
Günümüzde, depo yönetimi hizmetleri (GitHub, GitLab gibi) bireysel ya da işbirliğine dayalı olarak, başarılı bir şekilde yazılım geliştirmenin hayati unsurlarıdır. Bu hizmetler olmadan, açık kaynak projelerde yapılan değişikliklerin yönetilmesi zor olurken, geliştirme devam ettikçe verimliliğin sağlanması da zor oluyor. Açık kaynaklı projeler için en iyi kod yönetimi hizmetini ararken, geliştiriciler genellikle en popüler iki platform arasında karşılaştırma yapar: GitHub ve GitLab.
GitHub nedir?
Muhtemelen bildiğiniz gibi, 2008’de başlatılan GitHub, Dünya’nın en popüler Git tabanlı depo yönetim platformudur. GitHub açık kaynaklı kodun barındırılmasını desteklese de, tamamen açık kaynaklı değildir. Özel depolar için ücretli üyelik seçenekleri sunarken, açık kaynaklı projeler için ücretsizdir. Öğrenciyseniz, education hesabı ile birçok hizmetten de ücretsiz faydalanabilirsiniz. Ek olarak, GitHub’ta projenizi tamamlamanıza yardımcı olacak büyük ve canlı bir topluluk da bulabilirsiniz.
GitLab nedir?
2011 yılında başlatılan GitLab, açık kaynaklı projelerin meraklıları arasında bir çekişme kazanan, web tabanlı bir başka Git deposudur. Açık çekirdek yapıda olup, geliştiricilerin özelliklerini geliştirmesine ya da katkıda bulunmalarına izin verir. GitHub’tan farklı olarak GitLab, açık kaynaklı projeler için de ücretsiz özel depolar sunar.
Microsoft, GitHub’ı satın alacağını açıkladığında, birçok geliştirici, projelerini diğer rakip platformlara, özellikle de ithal depo sayısında büyük bir artış olduğunu bildiren GitLab’a taşıdı.
GitHub ve GitLab’ın ortak noktaları neler?
GitLab ve GitHub’ın ortak olarak bizlere sunduğu hizmetler şu şekilde;
- Pull request
- 3rd party integrations (3. parti entegrasyonlar)
- Fork/clone repositories (Depoları klonlama/forklama)
- Code review (Kod denetimi)
- Code snippets (Kod parçacıkları) (Kullanıcıların projenin tamamını paylaşmadan, bir projeden küçük kod parçalarını paylaşmalarını sağlar.)
- Issue tracking (Görev takibi)
- Advanced permission management (İleri izin yönetimi)
- Markdown support (Markdown işaretleme dili desteği)
- Inline editing (Satır içi düzenleme)
- Two factor authentications (İki faktörlü kimlik doğrulama)
- Feature rich API (Özellik bakımından zengin API)
Depoları taşıma
Hangi sistemi kullanacağınıza karar verdiğinizde, önceki projelerinizi taşıma ve verilerinizi kaybetmemek önemli bir yer kaplar. Depolarınızı GitHub, Bitbucket vs sistemlerden GitLab’a taşıyacaksınız yapmanız gereken tek şey, import etmek.
Sonuç olarak, GitLab ile GitHub arasındaki seçim, açık kaynaklı programlama projenizde gerçekleştirmeyi düşündüğünüz özel hedeflere bağlıdır. Bu nedenle, beklentilerinizi dikkatlice değerlendirmeli ve gereksinimlerinize en uygun depo yönetimi platformuna gitmelisiniz.
GitLab ve GitHub karşılaştırmasındaki büyük farklardan biri, GitLab’ın yerleşik Sürekli Entegrasyonu / Teslimatı (CI) özelliğiydi. CI, birçok geliştirme ekibi için büyük bir zaman tasarrufu ve büyük bir kalite güvencesi. GitLab kendi CI’lerini ücretsiz sunuyor ve harici bir CI servisi kullanmanıza gerek kalmıyor. GitHub, kodunuzu çalıştırmak ve test etmek için çeşitli üçüncü taraf entegrasyonları (Travis CI, CircleCI veya Codeship gibi) sunuyor olmasına rağmen şu anda yerleşik bir CI çözümü yok.
Bizim ekip olarak en önemli önceliklerimizden biri depo ve CI/CD araçlarının tek olmasıydı, bu kararımızı büyük ölçüde etkiledi ve bunun sonucunda depolarımızı GitLab’a taşımaya karar verdik.
Konuyla ilgili daha detaylı karşılaştırmayı bu sayfada bulabilirsiniz.