Git’e Genel Bakış Part 1: Versiyon Kontrol Sistemleri
Git şüphesiz ki en popüler versiyon kontrol araçlarından birisi ve öğrenmek için gerçekten dünya kadar kaynak var. Ancak yazılım dünyasında karşılaşılması mümkün senaryolarla birlikte bir Türkçe doküman da ben yazmak istedim.
Versiyon kontrol sistemi (VCS), dosyaların üzerinde yapılan değişiklerin kaydını tutarak daha sonra eski versiyonlarına dönülebilmesini ve birden çok geliştiricinin bir proje üzerinde çalışmasını kolaylaştıran bir sistemdir. Temel olarak iki gruba ayırabiliriz.

Merkezi versiyon kontrol (CVCS), asıl codebase’in merkezi bir sunucuda tutulduğu ve geliştiricilerin sunucudan izin alarak kodlar üzerinde geliştirme yaptığı sistemdir. CVS, SVN, TFS örnek olarak verilebilir.
Dağıtık versiyon kontrol (DVCS), codebase’in geçmiş değişiklik bilgilerini de içerecek şekilde (mecburen böyle olacak diye bir şey yok) her yazılımcının bilgisayarında bulunduğu ve yazılımcıların merkezi bir server olmasa dahi kendi local ortamlarında geliştirme yapmalarına olanak sağlayan sistemdir. Git, Mercurial, BitKeeper örnek olarak verilebilir.
Peki hangisini seçmeliyiz?
- CVCS daha basit olduğu için öğrenmek ve yönetmek daha kolaydır.
- DVCS ile çevrim dışı geliştirme yapılabilir ancak CVCS için her zaman ayakta olması gereken bir sunucu gerekir.
- CVCS ile proje geçmişi de local olarak tutulduğundan (aslında böyle olmak zorunda değil demiştik) bilgisayarda fazla yer kaplar ancak DVCS ile sadece projenin son halini bilgisayarımıza indirmemiz yeterlidir.
- DVCS sunucusu bir nedenden çökerse proje geçmişi de yok olur. Ama DVCS ile localdeki veriler backup gibi kullanılabilir.
- Merge conflict DVCS ile yaşanmaz. (ya da az yaşanır diyelim)
Bu şartlar altında proje neyi gerektiriyorsa o sistemi kullanmak gerekir. Çok fazla geliştiricinin olduğu büyük open source projelerde ise DVCS nerdeyse kaçınılmazdır.
Git, dağıtık versiyon kontrol sistemlerinden birisidir ve bazı istatistikler kullanımının git gide arttığını gösteriyor. Bu noktada Github’un Git olmadığını da belirtmekte fayda var.
Github vs Git
Git bir DVCS iken Github, üzerinde Git’in çalışmasına izin veren bir bulut sunucudur.
Yani bilgisayarımıza Git’i kurup projemizi Git ile takip edebiliriz ancak çalışma arkadaşlarımız bizim bilgisayarımızdaki kodlara nasıl ulaşacaklar? Bilgisayarları doğrudan birbirine bağlamak gerekir ki oldukça zahmetli bir işe dönüşebilir (aynı local ağda olabilirler örnek olarak) ya da bir sunucu vasıtasıyla kodlarımız Github’ın sağladığı gibi merkezi bir repoda tutulabilir.
Özetle Github, Git kullanmak için zorunlu değildir. Kendimiz de herkesin erişebileceği bir bilgisayara server repomuzu kurabiliriz ya da Github’a alternatif olarak başka web hizmetlerini de kullanabiliriz mesela GitLab, BitBucket gibi.
Leave a Reply