Günümüz yazılım geliştiricileri, kaynak dosyaları belirli bir yerde toplayarak işlerini kolaylaştırmaktadırlar, bu konuda en büyük yardımcıları ise Subversion’dur. Artık yazılımlar sadece bir ülkeden ve aynı dili konuşan geliştiriciler ile değil, pek çok ülkeden farklı dilleri konuşan geliştiricilerin katkılarıyla oluşturulmaktadır ve onların işini kolaylaştıracak her araç önemlidir.

Subversion kısaca sürüm takibi anl***** gelir. Bir örnekle açıklamak istiyorum.

Öncelikle subversion olmadığında neler olacağına bakalım. Mesela Z yazılımını geliştiren toplam geliştirici sayısı 10 olsun bu 10 kişiden, verilen kaynak dosyalarında, birbirlerinden habersiz yapacakları değişikliklerin ve düzenlemelerin sonucu ortaya bir Z yazılımının çıkarmalarını bekliyoruz, böyle bir durumda neler olabilir? Her geliştirici kendine has değişiklikler yaptığı için önce bu değişiklikler grup arasında değerlendirilmelidir bunu SVN olmadan nasıl yaparlar bilmiyorum bir forum, ya da anında mesajlaşma yazılımlarından birinde yapacakları toplantıyla mı? Böyle olunca doğal olarak herkesin yaptığı değişikliğin değerlendirilmesi çok uzun zaman alacaktır ve sonra konuşulanlara göre tekrar değişiklikler yapılır ve bunların uygulanması aşamasına gelinir diyelim, gelinir de sonuçta Z yazılımının ortaya çıkması için çok fazla zaman ve boşuna emek harcanacaktır. Ve Z yazılımını oluşturan asıl dosyaların ya da daha sonra değiştirilmiş en güncel sunumlarının nerede olduğundan belki proje lideri hariç kimsenin haberi yoktur. Ortada işleri kolaylaşıtırabilecek bir düzenin eksikliği söz konusudur.

Peki diyelimki Subversion var ve aynı senaryo; neler olacağına bakalım. Z yazılımının kaynak dosyaları herkesin ulaşabileceği bir dizine (web sunucusunda) yerleştirilir, her geliştiriciye kendine ait parola ve kullanıcı adı verilir, daha sonra her geliştirici bu hesaba bir subversion yazılımı kullanarak girer ve gerek gördüğü dosyalarda değişiklikler yapar, yaptığı değişikliğin sebebini ve neler yaptığını bir not şeklinde değişikliğe iliştirebilir ve diğerlerinin görmesini sağlar, değişiklik yaptığı eski dosya halen subversion içinde barındırıldığından eğer grup üyeleri tarafından onaylanmazsa yapılan değişiklikler kolayca geri alınır. Hatta bu iki dosya arasındaki farkı görmek isteyen kullanıcılar, eski dosyalar yine sunucuda olduğu için metin farklarını karşılaştıran yazılımlar aracılığı ile nelerin değiştiğini satırı satırına görebilirler.

Yukarıda saydığım özelliklerin yanında SVN yani subversion, çevirmenler için de kolaylık sağlamaktadır, Z yazılımının çevirmenine SVN giriş hakkı verilir, bu çevirmen SVN aracılığı ile dil dosyasındaki değişiklikleri, neler yapılıp yapılmadığını görür ve kendi dil dosyasını düzenleyerek bu dizine geri gönderir ve onun yaptığı değişiklikleri de diğer takım arkadaşları görür, bu işlem bir yazılımın çeviri açısından güncel tutulmasında önemlidir çünkü yazılım en nihayetinde SVN’de bulunan kaynak dosyaların derlenmesi ile oluşturulur.

Subversion hakkında yeterince bilgimiz oldu herhalde ancak nedir bu subversion’un yapısı, tabiki daha önceden konuya ilgi duymayan ve birden bire subversion kullanan ve http://svn. ile başlayan adresi gören kimse, olayı yadırgayabilir ve hatta soğuyabilir ancak bir kere kullandığında sağladığı kolaylıklar karşısında vazgeçemiyeceği bir yazılımla karşılaşacaktır. Bu nedenle hem bu geçiş aşamasını kolaylaştırması hem de ön bilgi vermesi açısından subversiondaki klasörlerden bahsedeceğim.

Temelde bir subversion içerisinde üç adet klasör bulunmaktadır ve bunlar standarttır.

Trunk
Branch
Tag

Kelime anlamları Türkçe olarak verilirse pek bir ipucu sağlamayan bu klasörlere yine Z yazılımından örnekle gözatalım.

Trunk: Z yazılımının en güncel sürümünü oluşturacak kaynak kodlarının bulunduğu klasördür. Geliştiriciler genellikle bu klasör üzerinde çalışırlar ve yaptıkları en son değişiklikler genellikle bu klasördeki kaynak dosyalardadır. Ancak böyle bir durumda en kararsız olan dosyalarda bunlardır o yüzden son kullanıcıya bu dosyaların en son halinden oluşturulan yazılım verilmez.

Branch:Trunk’da son haline getirildiğine inanılan dosyalar Branch’a aktarılır, Branch içindeki kaynak dosyalar son kullanıcıya ulaştırılacak olan Z yazılımının kararlı olduğuna inanılan kaynak dosyalarıdır. Z yazılımı yayınlandıktan sonra geliştiriciler yine yapacakları değişiklikleri Trunk içerisinde yapmaya devam ederler.

Tags: Aynı etiketleme işlemi gibidir, mesela trunk içinde Z yazılımının 1.0.1 beta sürümünü oluşturan kaynak dosyalar var ve yazılım geliştiricileri bu dosyaları bir şekilde ayırmak ve sınıflandırmak istiyorlar, taki kararlı sürüm çıkana ya da daha sonraki herhangi bir zamana kadar geliştirme aşamalarının etiketlemek istiyorlar, o zaman tag klasörü içine Z 1.0.1 beta adında bir klasör açarlar ve bu klasör içinde trunkta bulunan ve bu sürümü oluşturan kaynak dosyalar bulunur.

kaynak