Subversion nedir? Trunk, branch ve tag klasörlerinin görevleri nelerdir?

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 anlamına 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.

Daha sonra konu ilgimi fazlaca cezbedmeye başlarsa daha ayrıntılı makaleler yazabilirim.

Kolay gelsin.

11 Responses to “Subversion nedir? Trunk, branch ve tag klasörlerinin görevleri nelerdir?”

  1. resim Says:

    teşekkürler.

  2. Benimol Says:

    çok güzel bir anlatım olmuş elınıze saglık..

  3. genç portal Says:

    bilgi için teşekkürler.

  4. Şenol Korkmaz Says:

    Sanırım Branch ve Trunk ı karıştırdınız zira subversion geleneğinde Trunk her zaman kararlı olması gereken kodların tutulduğu konumdur. Branch ise çalışmanın çeşitli alt çalışmalar halinde yürütüldüğü konumdur.
    Zaten Branch kelimesi türkçede Branş yani dal budak manasına gelir.
    Bu arada tebrikler, faydalı bir yazı olmuş. Tabii trunk ve branch kelimeleri yer değiştirse daha da faydalı olacak. Saygılarımla…

  5. webdr Says:

    Şenol Bey bunları aynı zamanda tecrübelerime dayanarak yazdım, çeşitli ciddi çeviri projelerine katılıyorum ve bana sürekli trunk dizininde çalışma yapmam gerektiği söyleniyor ve çalışmalarımız daha sonra bu dizinden otomatik betiklerle alınıp branch’a aktarılıyor ve bu otomatik betik yazılımın kararlı sürümlerini branch beta aşamasındaki sürümlerini ise trunk içinde bulunan dosyaları kullanarak oluşturuyor. Belki işlemler arası böyle farklılıklar olabilir. Verdiğiniz bilgiler için teşekkürler.

  6. Sevdin Filiz Says:

    Çalışma klasörleri kesinlikle doğru tanımlanmış.

    Trunk çalışma alanıdır ve içindekiler her zaman çalşmayabilir, tamamlanmamış olabilir.

    Gerek ekip çalışması olsun gerekse tek başıma olayım, aktif olarak SVN yi kullanıyorum ve her kod yazarına öneriyorum, yararları saymak ile bitmek. Benim için olmazsa olmaz bir şey.

  7. Nihan Guner Says:

    Cok faydali bir yazi olmus elinize saglik

  8. Şenol Korkmaz Says:

    Yazalı uzun zaman olmuş fakat düzeltmek boynumun borcu, Trunk konusundaki çokbilmişliğimi bağışlayın, tabii ki siz haklısınız. Bu vesileyle bu yazının bilmeyen biri (benim gibi) için ne kadar faydalı olduğunu da görmüş olduk. Sayenizde öğrendim, teşekkür ederim.

  9. Samet Ç. Says:

    Yazı ve yorumlar için teşekkürler.

  10. Musa AVCI Says:

    trunk, branch, tags klasörleri yerine kendi adlandırdığımız isimlerde 3 klasör kullansak nasıl olur?

  11. webdr Says:

    Sanırım SVN ruhuna aykırı olurdu :)

Leave a Reply