Versiyon Kontrol Sistemi Nedir? – Git, SVN vb.

By -

Yazılım projelerinin olmazsa olmazı versiyon kontrol sistemlerine hepimiz aşinayız. (Değil mi?)
Olmayabiliriz de…

Peki varlığından haberdar olduğumuz zaman aydınlanmamızı sağlayan, “ben nasıl olur da böyle bir şeyin varlığını bilmem!” dedirten,

Git mi SVN mi kavgası üzerine yıllar yılı süren arkadaşlıkları bitiren bu versiyon kontrol sistemi dedikleri şey nedir?

Sevgili yazılım projelerimizi geliştirirken:

  1.   Birden fazla yazılımcının aynı anda, birbirinin değişikliklerini ezmeden, bir poje üzerinde çalışabilmesini sağlayan,
  2.   Gerektiğinde eski bir kod kaydına ulaşmamıza yardımcı olan, (a tarihinde, b yazılımcısı tarafından gerçekleştirilmiş, c açıklamalı kayıt)
  3.   Eski ile yeni kod arasında karşılaştırma yapmak istediğimizde bize bu olanağı sağlayan

ve (daha sonra değineceğimiz) birçok faydalı özelliği bulunan  sistemlere versiyon kontrol sistemleri diyoruz.

İyi hoş dedin de, tam anlayamadım ben? Madde madde gitsek?

Versiyonlama sistemi kullanmayan bir developer

Versiyonlama sistemi kullanmayan bir developer (temsili)

Peki madem:

“Birden fazla yazılımcının aynı anda, birbirinin değişikliklerini ezmeden, bir proje üzerinde çalışabilmesini sağlayan”

Versiyon sistemi kullanılmadığında, bir dosya üzerinde, birden fazla kişi değişiklik yapmaya kalkışırsa, dosya en son değişikliği yapan kişinin kaydettiği biçimde kaydedilir. Yani en son dosyayı kaydeden diğer insanların yaptığı değişiklikleri yok eder.

Proje geliştirirken, “Sevgili arkadaşlar, A.java dosyasında bir değişiklik yaptım, kaydettim. Dosyayı açmış, değiştirmiş olan varsa yaptığı değişiklikleri bir kenara yazsın, dosyayı tekrar alıp açsın ve benim yaptığım değişikliğin üzerine kendi değişikliklerini yazarak kaydetsin.” diyebilme lüksümüz olmadığından (neyse ki!), versiyon kontrolünün olmadığı bir projede birden fazla kişiyle, akıl sağlığımızı koruyacak biçimde çalışmamız pek mümkün değil.

“Gerektiğinde eski bir kod kaydına ulaşmamıza yardımcı olan, (a tarihinde, b yazılımcısı tarafından gerçekleştirilmiş, c açıklamalı kayıt)”

Hepimiz, hayatımızın bir döneminde, versiyonlama sistemi nedir/ne değildir bilmiyorken, yaptığımız değişiklikleri (ilkel yöntemlerle) kayıt almaya çalışmışızdır.

versiyonlama-yöntemi

İlkel bir versiyonlama yöntemi, 372 AC

Tamamiyle kendimizi rahatlatmak için ürettiğimiz bu yöntemler hiçbir işe yaramadığı gibi, illa ki diskimizi saçma sapan isimlere sahip dosyalarla doldurup daha sinirli bireyler olmamıza sebep olmuştur.

Halbuki güzide versiyonlama sistemleriyle  kim, hangi tarihte,  hangi dosyalar üzerinde, hangi açıklamayla, nasıl bir değişiklik yapmış

sorularına, yapılan her kayıt üzerinden cevap alabilirdik.

“Eski ile yeni kod arasında karşılaştırma yapmak istediğimizde bize bu olanağı sağlayan”

  •  En son yaptığınız değişiklik programınızın çökmesine sebep oluyor ve bu değişiklik hangi dosyalarda olmuştu hatırlamıyor musunuz?
  • Yapılan değişiklikler hangi dosyalarda hangi satırları etkilemiş görmek mi istiyorsunuz?
  • Herkesi şaşkınlığa uğratan 2000 satırlı methodun kime ait olduğunu mu öğrenmek istiyorsunuz?
Nice geliştiriciden hayır duası koparan özellik: Karşılaştırma

Nice geliştiriciden hayır duası koparan özellik: Karşılaştırma

Üzülmeyin! Versiyonlama sistemiyle artık hayat daha kolay!

Versiyonlama sistemleriyle, herhangi bir zamana ait olan iki farklı kayıtta, dosya-dosya, satır-satır yapılan değişiklikleri ve değişiklikleri yapanları takip etmemiz pek ala mümkün.

E süpermiş! Ama hangi sistemi kullanayım? (Nikon mu Canon mu?)

Daha önce kullandığım ve en popüler iki sistemi önerebilirim:

–   Git
–   SVN

Tamam ama hangisi?

İki sistemin de karşılaştırmasını yapan bir yazıya daha sonra değineceğim – //TODO: Buraya link gelecek

Ancak öğrenme hevesiyle dolup taştıysanız ve nereden başlayacağınızı bilmiyorsanız konuya direkt Git öğrenerek dalış yapabilirsiniz. (Nikon’u daha çok seviyorum.)

Ayrıca, kısa zamanda birçok özelliği Codeschool’un interaktif uygulamasıyla öğrenebilirsiniz, benim hoşuma gitti: http://codeschool.com/courses/try-git

İyi kodlamalar!