May 1, 04:12 PM
Subversion(SVN) ve Subclipse
Bilindiği üzere projeler üzerinde birden fazla çalışan olduğunda özellikle internet üzerinden yapılan open source projelerde olsun şirket içi çalışmalarda olsun en büyük yardımcılarımız version control system’ leridir.
Özellikle bir proje üzerinde eşzamanlı(concurrent) çalışmayı mümkün kılmaları, farklı geliştiriciler(developers) tarafından yapılan değişikliklerin birleştirilmesini(merge) kolaylaştırması, herkesin kendi çalışma kopyasına sahip olmasına(distribution of work) izin vermesi, çalışmalrın birbirinden bağımsız parçalara dönüştürülebilmesi üstelik atalarını unutmadan(branching), istediğiniz gibi versionlarınızı isimlendirmesi (tagging), yapılan bütün değişiklerin loglarının tutulması(logging) ve veri bütünlüğünün(data integrity) sağlanması gibi özellikleri biz programcıların işini baya kolaylaştırmaktadır.
Version control system deyince ilk akla CVS ve onun bir üst modeli diyebileceğimiz Subversion(SVN) gelmektedir. Farklılıklardan söz edecek olursak temel olarak:
Subversion daha esnek(flexible) bir repository yapasına sahip olup kopyalama(copy), taşıma(move), adlandırma(rename) işlemlerinin kolaylıkla yapılmasına izin vermektedir.
Subversion’ da commit yapıldığı zaman sadece dosya farklılıkları sunucuya(server) iletilmekte ya da update sırasında da yine sadece farklılıklar çalışma alanına (workspace) aktarılmaktadır. Buda sunucu istemci yapısını iletişim açısından rahatlatmaktadır.
Subversion’ da kopyalama işleminde dosyalar ya da klasörler olduğu gibi kopyalanmayıp sadece o dosyalara ve klasörlere link oluşturulmaktadır bu da cheap copies olarak adlandırılıyor. Bir değişiklik meydana geldiğinde sadece değişikliğin meydana geldiği dosyanın kopyası olauşturulup onun için ayrı bir history başlatılıyor.
Diğer önemli bir özellik Subversion da Atomic Commitler ki subversion database olaylarında yani repository için transactions kulanıyor. Böylece yarıda kesilen bir işlemden dolayı repository’ den endişe etmiyorsunuz çünkü tamamlanamayan işlemler repository’ nin eski haline dönmesini böylece stable kalmasını sağlıyor.
Binary dosyalara da davranışları farklıdır bu iki systemin. CVS commit sırasında değişikliklerin farkına varamayıp sadece her commit edilen binary dosyanın bir kopyasını oluşturup tutarken, subversion binary dosyadaki farklıların tespiti için bir fonksiyon kullanıp binary dosyaların text dosyaları gibi versionlanmasını sağlıyor.
Tabi her iyi şeyin birde kötü tarafı vardır hiçbir şey kusursuz değildir. Subversio’ nın da eksikleri vardır. Özellikle büyük projeler için önem arz eden dağıtık(distributed) repository yani farklı bölgelere(sunuculara) dağılmış projeler üzerinde çalışma olayını subversion desteklememektedir ama SVK diye bir proje vardır bu konu üzerine.
Ayrıcı merging yerine kullanılan ama pek tercih edileyen kilitleme(locking) olayınıda yani birisi bir dosya üzerinde çalışırken diğerlerinin müdahale edememesini de desteklememektedir.
Subclipse, eğer projelerinizi eclipse’ le geliştiriyorsanız ve eclipse de pluginable bir ide ise hemen bir plugin arayacaksınız SVN ile kullanmak için işte burda devreye Subclipse girmektedir. SVN için hazırlanmış güzel bir arayüz. Tabi hâla isminin neden Subeclipse değilde Subclipse olduğunu anlayabilmiş değilim eğer bilgisi olan varsa lütfen bilgilendirsin beni :).
Bu kadar yazdım ama zaten oturup version control system ve subversion hakkında kısa bir sunum hazırlamıştım :D buyrun dileyen bakabilir.
May 1, 04:12 PM