7 Kasım 2013 Perşembe

Versiyon Kontrol Sistemleri

Versiyon Kontrol Sistemi; bir dosya veya dosyalar üzerinde zaman içerisinde yapılmış tüm değişiklikleri tutan sistemdir.

Versiyon Kontrol Sistemi özellikleri:

  • Dosyanın veya projenin tamamının daha önceki, değişiklik yapılmış/yapılmamış herhangi bir hâline geçme imkânı sağlar
  • Zaman içerisinde yapılan değişikliklere göz atma imkânı sağlar
  • Problem oluşturan veya faydalı olan bir kısım üzerinde kimin değişiklik yaptığını öğrenme imkânı sağlar
Versiyon Kontrol Sistemleri Tipleri
  1. Yerel Versiyon Kontrol Sistemleri
  2. Merkezi Versiyon Kontrol Sistemleri
  3. Dağıtık Versiyon Kontrol Sistemleri
1. Yerel Versiyon Kontrol Sistemleri

En eski versiyon kontrol sistemi yaklaşımıdır. Üzerinde çalışılan proje ve yapılan değişiklikler, kullanıcı makinası üzerindeki veritabanında tutulur. Yerel versiyon kontrol sisteminde yalnızca bir kullanıcı etkin bir şekilde çalışabilir. Metin dosyaları dışındaki dosya türleri üzerinde versiyonlama yapmak oldukça zordur. Sunucu yönetiminde, yalnızca yönetici yapılandırma dosyaları ve script'ler üzerinde sıkça çalıştığından dolayı; bu yaklaşım tercih edilebilir.
En popüler yerel versiyon kontrol sistemi RCS(Revision Kontrol System)'dir.
Yerel Versiyon Kontrol Sistemleri Çalışma Mimarisi

2. Merkezi Versiyon Kontrol Sistemleri

İstemci-sunucu mimarisi şeklinde çalışan versiyonlama yaklaşımıdır. Yerel versiyon kontrol sistemlerinde birden fazla kişinin proje üzerinde etkin çalışabilmesi için ortaya atılmış bir versiyonlama sistemidir. Proje katkıcılarının ortak olarak kullandığı bir veri deposu vardır. Katkıcılar bu depo üzerinden checkout ve commit işlemlerini gerçekleştiriler.
İlk merkezi kontrol sistemi CVS(Concurrent Version Control System)'dir ve en popüler olan SVN(Subversion), CVS baz alınarak gerçekleştirimi yapılan bir versiyon kontrol sistemidir.
Merkezi Versiyon Kontrol Sistemleri Çalışma Mimarisi


3. Dağıtık Versiyon Kontrol Sistemleri

Merkezi versiyon sistemlerinin "katkıcıların offline çalışabilme" ve "deponun zarar görmesi durumunda geri getirilmesi" gibi durumlardaki eksikliklerinden dolayı ortaya atılmış bir versiyonlama sistemidir. Uzak depo sunucusu dışında, proje üzerinde çalışan her makina projenin tamamının kopyasını yerelinde tuttuğundan dolayı; her biri birer depo görevi görmektedir aslında. Böylelikle katkıcılar proje üzerinde değişiklik yapmak istediklerinde veya proje geçmişine göz atmak istediklerinde uzak depo ile iletişime geçmek zorunda değildir. Ayrıca katkıcılar, uzak depoyu hiç işin içine katmadan birbirleri arasında da veri alışverişi yapabilirler.
Dağıtık Versiyon Kontrol Sistemleri Çalışma Mimarisi

Dağıtık versiyonlama sistemi öncülerinden birisi BitKeeper'dır ve son dönemde en yaygın kullanılan örneği olan, Linus Torvalds'ın geliştirdiği Git'in geliştirilmesinde de ilham kaynağı olmuştur. Linux çekirdeği geliştirilmesi sırasındaki versiyonlama işi bir dönem BitKeeper'da yapılıyordu. BitKeeper'ın telif hakkı sahibi Larry McVoy'un bu ürünün artık ücretli olduğunu duyurmasının ardından, Andrew Tridgell BitKeeper protokollerini geriye mühendislik(reverse engineering) yardımıyla çözümlemiş ve Git'in önemli bir temel taşını oluşturmuştur.
Git'in tasarımında Linus 3 temel kriter belirlemiştir:
  1.  Merkezi kontrol sisteminin öncüsü olan CVS'i "ne yapmama" konusunda örnek al ve tasarımı ona göre şekillendir.
  2. BirKeeper benzeri, dağıtık çalışmayı destekleyen iş akışları oluştur.
  3. Bozulma(corruption) anında güçlü koruma önlemleri al.
Git'i denemek isterseniz; temel Git terimlerinin oldukça faydalı açıklamalarının da yer aldığı sayfaya buradan erişebilirsiniz.

Referanslar
  1. http://git-scm.com/book
  2. http://en.wikipedia.org/wiki/Git_%28software%29
  3. http://en.wikipedia.org/wiki/Apache_Subversion#cite_note-26
  4. http://www.pushok.com/software/svn-vscvs.html
  5. http://en.wikipedia.org/wiki/Revision_Control_System
  6. http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/



Hiç yorum yok: