30 Ocak 2017 Pazartesi

SUBVERSION KULLANIMI

Öncelikle kullanılacak SVN arayüzü seçilmelidir. SVN sunucudan kod ya da dokümanları çekebilmeniz için çeşitli arayüzler tasarlanmıştır. Bu arayüzler kullanılan işletim sistemine ve yazılım geliştirme platformuna göre değişiklik gösterebilir. Örn : TortoiseSVN, VisualSVN, UberSVN vb.

Anlatım aşamasında şu anda en yaygın olarak kullanılan TortoiseSVN arayüzünü referans alınacaktır. Öncelikle bir SVN sunucuya ihtiyaç duyulmaktadır. SVN sunucu olarak Google Code ya da SourceForge gibi bilinen alanların da kullanılabildiği gibi, http://beanstalkapp.com adresinden küçük bir ücretsiz SVN sunucusu da elde edilebilinir. Eğer tek başınıza çalışıyorsanız ya da profesyonel bir amaç ile kod yazmıyorsanız belleğinizden yerel bir veri alanını da kullanabilirsiniz. SVNServer alanınızı ayarladıktan sonra http://tortoisesvn.net/downloads.html linkinden işletim sisteminize uygun TortoiseSVN programını indirip kurabilirsiniz.

Programı kurduktan sonra sunucudan çekilecek dosyalar için bir klasör açıp bu klasörü ”create respository here” komutu ile ilgili klasörü SVN klasörü haline getirilmesi gerekir.

SVN Komutları

Yerel SVN klasörü oluşturulduktan sonra aşağıdaki SVN komutlarını kullanmaya başlayabilirsiniz.
Import : Halihazırda Svn’de yer almayan bir projeyi Svn sunucusuna göndermek için kullanılan komuttur.
Checkout : Svn’de yer alan bir projenin çalışan kopyasını yerel klasörünüze almak için kullanılan komuttur.
Export : Svn’de yer alan bir projenin çalışan kopyasını almadan ilgili dosyayı yerel diskinize kopyalamak için kullanılan komuttur.
Commit : Dosyanızın çalışan kopyası üzerinde yaptığınız değişiklikleri SVN sunucusuna göndermek için kullanılan komuttur
Update : Dosyanızın çalışan kopyasının sunucudaki versiyonu ile senkronize edilmesi için kullanılan komuttur.
Branching/Tagging : Genel pratik olarak kaynak kodunuzun en güncel hali Trunk klasörü altında tutulmaktadır. Geliştirme sırasındaki tüm değişiklikler Trunk klasörü altında gerçekleştirilir. Kullanıma hazır hale gelen versiyonlar ise Tag klasörü altında versiyon numarası bazında açılan klasörlerde arşivlenir. Taglar genel olarak değiştirilmezler ve arşivleme amaçlı kullanılırlar. Deneysel amaçlı çalışmalar ise Branches klasörü altında tutularak denemeler bu klasör altında bulunan dosyalarda gerçekleştirilir.
Revert : Dosyanızın istenilen bir revizyona döndürülmesi için kullanılır.
Diff : Güncel dosyanız ile diğer versiyonlar arasındaki farklılıkları görebilmeniz için kullanılır.
Show Log : Üzerinde çalışan dosyada ne zaman ve kim tarafından değişiklik yapıldığını gösterir.
Export : Çalışan kopyalarınızın bulunduğu klasörden farklı bir klasöre versiyon bağımsız olarak
dosyaları alabilmeniz için kullanılır.
Get Lock : Üzerinde çalıştığınız dosyayı kilitleyerek diğer istemcilerin bu dosya üzerinde değişiklik yapmasını önleyebilmeniz için kullanılır.

SVN - Veri Havuzu

Subversion bilgi paylaşımı için merkezileştirilmiş bir sistemdir ve bu sistemin çekirdeğini veri havuzu (respository) oluşturmaktadır. Veri havuzu ilgili bilgileri ağaç dosya yapısı ile tutmaktadır. Sınırsız sayıda istemci bu veri havuzuna bağlanarak buradaki dosyalar üzerinde okuma ve yazma işlemi gerçekleştirebilir.

Subversion veri havuzunu normal bir dosya sunucusundan ayıran en büyük özellik dosyalarda yapılan bütün değişikliklerin tutulmasıdır, hatta bu tutulan değişiklikler arasında dosyaların silinmesi yeniden adlandırılması ve yerlerinin değiştirilmesi de bulunmaktadır.

Subversion dosyaların tutulmasında kopyala-değiştir-birleştir yapısını kullanmaktadır. Bu modelde her istemci veri havuzundan çalışan bir kopyayı kendi veri alanına çekerek gerekli işlemleri yapmaktadır. Bu şekilde istemciler paralel bir şekilde çalışabilmektedirler. İstemciler kendi değişikliklerini yaptıktan sonra dosyaları birleştirerek son halini verebilmektedirler.


SVN - Çalışan Kopya

Subversion çalışan kopya dosyaları basit bir ağaç dizini yapısı içinde bulunan dosyalardan oluşmaktadır. Bu dosyalar istemci tarafından istenildiği gibi değiştirilebilmektedir. Yapılan bu değişiklikler istemci isteyene kadar diğer istemcilere yansıtılmaz.

Çalışan kopya dosya dizini içerisinde bazı ekstra dosyalarda bulunmaktadır. Bu dosyalar Subversion tarafından oluşturulan ve subversion komutlarının çalıştırılabilmesi için gerekli olan dosyalardır.


SVN – Veri Havuzu URL’leri

Subversion URL’leri standart bir söz dizimi kullanmaktadır. Sunucu adı ve port numarası URL’nin bir parçası olabilmektedir. file:// erişim metodu genellikle yerel erişim için kullanılır ayrıca bir network ana makinesi üzerinden file://hostname/path/to/repos şeklinde kullanılan UNC dizinlerinde de kullanılmaktadır. Yerel makineler için ana makine adı yerine yerel makine adı kullanılmalı ya da file:/// kısmı üçlü slash ile gösterilmelidir.

SVN –Revizyonlar

Dosyalar üzerinde yapılan değişiklikler ya hep ya hiç mantığı ile yapılmaktadır. Yapılan değişikliklerin tamamı dosya üzerinde uygulanamaz ise hiç bir değişiklik yayınlanamayacaktır.


Yayınlanan her değişiklik veri havuzunda farklı bir ağaç yapısı oluşturacak ve bu yapıya yeni bir numara verilecektir. Oluşturulan bu yeni yapı revizyon olarak adlandırılmaktadır. Numaralandırma işlemi her oluşturulan ağaç yapısı için bir önceki numara bir arttırılarak yapılır.


Revizyon numaraları oluşturulan ağaç numaralarının dizi numarası olarak da düşünülebilir. Boş klasör yerleştirildiğinde adres sıfır olarak işaretlenir. İlk dosya eklemesi ile birlikte adres yani versiyon bire yükseltilir.


Branching/Tagging/Merge

Versiyon kontrol sisteminin bir başka yeteneğide bir dosyayı bölebilme ve dosyanın geri kalanına dokunmadan değişiklikleri bölünen yeni dosya üzerinde yapabilme yeteneğidir. Genellikle yazılım test aşamalarında çıkan hataların dağıtılarak revize edilmesi için kullanılır. Küçük modüller halinde gruba dağıtılan bu hatalar düzeltilerek tekrar ana kod ile birleştirilebilir. Bu dağıtma işlemine Subversion Branching adını vermektedir. Dağıtılan bu parçaların birleştirilmesi ise Merge olarak adlandırılır.

Olası Hatalar

Commit işlemi sırasında eğer çalışan kopyanızın revizyon numarası ile sunucudaki revizyon numarası farklı ise hata alırsınız. Böyle bir durumda Update işlemi yapmak zorundasınız. Update işleminden sonra sizin çalışan kopyanız ile sunucudaki kopya farklı ise dosyanız “conflict” olarak işaretlenecektir. Böyle bir durumda dosyanızın iki adet kopyası diskinize yazılacaktır. Bunlardan biri sunucudaki versiyonu diğeri ise sizin çalışan kopyanızdır.


Bu çakışma durumu düzeltmek için dosyaları karşılaştırıp farklılıkları kendiniz düzeltmeniz gerekmektedir. Gerekli düzeltmeler yapıldıktan sonra TortoiseSVN’de “Resolved” fonksiyonunu kullanarak çakışma durumunun düzeltiği programa bildirilmelidir. Çakışma durumu düzeltildikten sonra yeni dosyanızı Svn sunucusuna “commit” edebilirsiniz.

Hiç yorum yok:

Yorum Gönder