Versiyon Kontrol Sistemi Nedir ?

Furkan Alaybeg
3 min readJun 17, 2019

--

Bu yazımda Github, GitLab, Bitbucket gibi versiyon kontrol sistemleri nedir, neden kullanmalıyız gibi konular üzerinde durmaya çalışacağım.

Version Control System bir döküman (yazılım projesi, ofis belgesi…) üzerinde yaptığımız degişiklikleri adım adım kaydeden ve isterseniz bunu internet üzerinde depoda (respository) saklamamızı ve yönetmemizi sağlayan bir sistemdir. Git, SVN, BitKeeper, Mercurial sürüm kontrol sistemlerine örnek olarak gösterilir.

Neden Versiyon Kontrolü?

  • Projelerde birden fazla kişi çalıştığını düşünürsek, gelişimin hızlanmasını sağlar.
  • Projede geliştirme yaparken, bulunduğumuz konuma nereden geldiğimizi anlamak için eski ve yeni kodumuz arasında karşılaştırma yapmamızı sağlar.
  • Projede hatayla karşılaştığımız durumlarda eski kod kaydına dönmemizi sağlar.
  • Açık kaynaklı projeler baz alınarak geliştirilecek yeni projelerde, süreci kolaylaştırmayı sağlar.

Versiyon Kontrol Sistem Tipleri

1. Local Versiyon Kontrol Sistemleri

En eski versiyon kontrol sistemi yaklaşımıdır. Çalıştığımız projemiz ve yaptığımız değişiklikler kullanıcı makinası üzerindeki veritabanında tutulur. Her yapılan commit bir versiyon olarak tutulur ve commit değerine hash ataması yapılarak her versiyon birbirinden ayırt edilmektedir. Ayrıca versiyon görüntüleme imkanını sağlar. Ancak bu sistemde sadece bir kullanıcı etkin bir şekilde çalışabilir.

2. Merkezi Versiyon Kontrol Sistemleri

Birden fazla kişinin bir proje üzerinde etkin çalışması için ortaya atılmış versiyonlama sistemidir. CVS, SVN birer merkezi versiyon kontrol sistemleridir. Bu sistemde proje ortak bir respository’de tutulur ve birden fazla geliştirici aynı respository üzerinde checkout ve commit işlemlerini gerçekleştirmektedir. Bu yöntemde herkesin projeye katkı sağlamasının yanısıra bazı ciddi sorunları vardır. Tek merkezli sunucu 1 saatliğine arızalanması durumunda, kullanıcılar 1 saat boyunca çalışmalarını veya çalıştıkları projenin sürümlenmiş kopyalarını kaydetmeleri mümkün olmayacaktır.

3. Dağıtık Versiyon Kontrol Sistemleri

Merkez versiyon sistemlerinin geliştiricilerin offline çalışabilmesi ve respository’nin zarar görmesi durumunda geri getirme gibi eksikliklerinden dolayı ortaya atılmış bir versiyon sistemidir. Git, Mercurial, BitKeeper… dağıtık versiyon sistemleri örnek gösterilebilir. Bu sistemlerde merkezi bir respository olmayıp, proje üzerinde çalışan her makine, projenin kopyasını kendi yerel bilgisayarında tutmaktadır. Geliştiriciler proje üzerinde değişiklik yapmak veya proje geçmişine göz atmak istediklerinde, uzak depo ile iletişime geçmek zorunda değildir. Sunuculardan biri çökerse ve o sunucu üzerinde ortak çalışma yürüten sistemler varsa, geliştircilerden birinin projeyi sunucuya geri yükleyerek sistem kurtarılabilir.
Özet olarak aynı projede farklı geliştiriciler, farklı biçimlerde çalışma yürüterek, farklı iş akışları ile çalışabilmeyi sağlar.

Umarım faydalı bir yazı olmuştur. Gelecek yazılarda görüşek üzere.
İyi Çalışmalar…

--

--

Furkan Alaybeg

Big Data Engineer | SQL | PySpark | Hadoop | Apache Airflow | Apache Flink