GIT Versiyon Kontrol

Peker Mert Oksuz
YazılımPortal
Published in
3 min readAug 8, 2015

--

Versiyon kontrol sistemi yazılım dünyasında oluşturulmuş büyük devrim niteliğine sahip araçlardan biridir. Linux çekirdeğinin geliştirilmesinde kullanılmak amacı ile Linux Torvalds tarafından bizzat geliştirilmiş olup şuanki pazar payının %30'larda olduğu bilinmektedir. [7] Git adıyla anılan bu versiyon kontrol sisteminde yerel bilgisayar ve uzakta bir bilgisayar olmak üzere iki farklı ortama sahiptir.

Yerel bilgisayar üzerinde git kurularak proje geliştirilmesinde önemli adımlar “commit” adı ile anılan kayıtlara geçilir. Geliştirme sürecinde her basamak commit edilerek projenin gelişim süreci kontrol altına alınmış olur. Tüm değişiklikleri versiyon olarak tek tek kaydederek olası bir gereklilik durumunda eski versiyonlara dönmeye olanak sağlar. Güvenlik amacıyla ve takım çalışmalarında uzak sunucuda git repository paylaşımı yapılmaktadır.

Git sunucusu üzerinden public veya private olarak iki tür ayar yapılabilmektedir. Private olması durumunda sadece sunucuya erişimi olan kişiler git repository’sini indirebilmektedirler. Repositoryi indiren kişiler projenin tüm versiyonlarınıda indirmiş olurlar.

3.1. Git Yapı Türleri

Git ile 3 farklı yapı oluşturulabilmektedir. Bu yapıların kendilerine özgü getirileri bulunmaktadır.

3.1.1. Local Versiyon Kontrol Sistemleri

Bir çok insan versiyon kontrolü için proje dosyalarını kopyalayarak isimlendirme yöntemini seçer. Bu yöntem oldukça basittir ve başlarda kolay gelir. Ancak ilerleyen zamanlarda versiyonlama işlemi zorlaşır ve versiyonlar arası karışıklıklara yol açabilir. Git ile bu yöntemlerin aksine oldukça basit ve kullanıcıyı yormayan bir yapı kurulabilmektedir. Local bilgisayarda proje için yapılan her commit mesajını bir versiyon olarak tutar ve bu commit değerine hash ataması yapılır. Hash ataması sayesinde her versiyon bir diğerinden ayırt edilir. Tarihsel sıra ile tutulan versiyonlar arası geçiş yapmakta bir git komutu kadar kolaydır. Ayrıca versiyo geçmişini görüntüleme imkanı sağlar. Local bir versiyonlama sisteminin diyagramı Şekil 3.1 de gösterilmiştir.

Local

Şekil 3.1: Local versiyon kontrol diyagramı

3.1.2. Merkezi Versiyon Kontrol Sistemleri

Bazı durumlarda geliştiriciler birbirleriyle etkileşimde olmak isterler. Geliştirilen projenin ortak bir repositoryde tutularak birden çok geliştiricinin aynı repository üzerinde çalışması yöntemine dayanan bu tasarım kısaca CVS olarak adlandırılmaktadır. CVS yapısının gösterildiği Şekil 3.2 diyagramı aşağıdadır.

Central VCS

Şekil 3.2: Merkezi versiyon kontrol diyagramı

Merkezi versiyon kontrol sisteminin bir çok avantajı bulunmaktadır. Örnek olarak herkesin projede belirli oranda katkı sağladığını düşünecek olursak. Yöneticinin kimin hangi işi yaptığı konusunda fikir sahibi olmasına olanak tanır. Bu sayede projenin hangi aşamalarından kimin sorumlu olduğu takip edilebilir.

CVS’in problemlerinden biride tek bir merkezi sistemin arızalanması durumunda tüm geliştiricilerin etkileşimi durur ve iş sürecinde aksama yaşanır. Veri kaybı yaşanması olasıdır.

3.1.3. Dağıtık Versiyon Kontrol Sistemleri

Dağıtık versiyon kontrol sistemleri kısaltılmış adıyla DVCS olarak anılır. DVCS sistemlerde merkezi bir repository yoktur. Bu nedenle veri kaybı önlenmiştir. Dağıtık versiyonlama sistemlerinde tüm kullanıcılar ve master bilgisayar aynı düzeydedir. Yazılımın tüm versiyonları her bir repositoryde tutulmaktadır. Bu nedenle merkezi sistemlere göre güvenlik ve etkileşim daha gelişmiştir. Dağıtık versiyon kontrol sistemlerinin diyagramı Şekil 3.3'te gösterilmiştir

Distributed

Şekil 3.3: Dağıtık versiyon kontrol sistemleri diyagramı

Dağıtık versiyon kontrol sistemlerinde karşılaşılan en büyük sıkıntı senkronizasyon ve veri paylaşımıdır. Git üzerinde yapılan karşılıklı değişiklikler aktarılırken birleştirme işlemi yapılmalıdır. Bu nedenle geliştiricilerin sürekli olarak merkezi sisteme senkronizasyon yapmaları gerekir. Yapılan değişiklikler farklı branchlerde aktarılarak ana branche birleştirilir.

--

--