Subversion (SVN) vs Git

Bu konu sizin aslında, “hangi versiyon kontrol sistemini kullanmalıyım?” sorunuza da yanıt olabilecek bir niteliktedir.

Subversion (Svn) ve Git Versiyon Kontrol Sistemleri Karşılaştırması

Takımınız için en iyi yazılım deposunu (repository) seçerken, bir takım önemli faktörler vardır. SVN (Subversion) geçtiğimiz yıllarda üretimde fiili olarak bir standart haline geldi ve kullanıldı. Ancak, daha sonradan hayatımıza Git diye bir şey girdi.

Git, Linus Torvalds tarafından Linux çekirdek geliştirilmesi amacıyla geliştirilmiş versiyon kontrol sisteminin dağıtılmış versiyonudur. Yıllar içerisinde, yazılım geliştirme amacıyla kullanılmış ve özellikle Open Source projelerin oluşturulmasında rol alarak da çok büyümüştür. Git, çoğu takım için daha iyi bir çözüm olmasına rağmen, SVN ile kıyaslandığında azıcık daha öğrenmesi zor olarak nitelendirilebilir.

Svn & Git farklarının objektif olarak özeti

  • Git Svn den epeyce hızlıdır.
  • SVN ile bir alt ağacı(subtree) indirip çalışabilirsiniz, ancak Git’te tüm projeyi klonlamanız gerekir. Bu klonlama ile kendinize geçmişi dahil bir kopya üretmiş olursunuz.
  • Git depoları, SVN ye kıyasla epeyce daha küçüktür. Örneğin Mozilla projesi için 30 kat daha küçüktür)
  • Git, baştan itibaren dağıtma amaçlı tasarlandığından, her geliştiriceye olabildiğince yerel kontrol imkanı sağlar. (örneğin bir şeyi yapıp kendinize commit edebilirsiniz. )
  • Git branch’ları (yan dalları) , SVN’e göre basit ve daha az kaynak harcarlar.
  • Git branch’lar kendi geçmişini tutarlar.
  • Git branchlar üzerinde daha çok denetim ve karıştırma (merge) imkanı sağlar.
  • Git depo dosyaları basittir. Tamir etme vb işlemlerinde ihtimaliz daha yüksektir.
  • SVN depolarını merkezi olarak yedeklemek daha basittir.
  • Git depo klonları, full bir klondur. Yani onun üzerinden yeni bir repo yapabilirsiniz.
  • SVN nin kullanıcı arayüzü, Git’inkinden daha gelişmiştir.
  • SVN nin versiyonlarında (revisions) dolaşmak 1,2,3,… şeklinde isim verdiğinden çok daha basittir. Git, ne idüğü belirsiz SHA-1 hash’ler kullanıyor.

Kaynaklar : GitSvnComparison, subversion_git_comparison