Genel Sorular
Önceki VII. Oylum - Subversion SSS Sonraki
Genel Sorular
1.1. Neden böyle bir proje mevcut?
1.2. Subversion mülkiyeti özel bir yazılım mı? Subversion'ın CollabNet'e ait olduğunu duydum.
1.3. Kendi projelerimde kullanmak için Subversion yeterli kararlılığa sahip mi?
1.4. Subversion'ın istemci/sunucu uyumluluğunda izlediği yöntem nedir?
1.5. Subversion hangi işletim sistemleri üzerinde çalışabilir?
1.6. Bu yeni dosya sistemi nasıl bir şey? Ext2 benzeri bir şey mi yoksa?
1.7. Subversion'ın bir Apache eklentisi olduğunu duydum. Subversion sunucular için ne kullanıyor?
1.8. Yani bu Subversion kullanmak için Apache yüklemek zorunda olduğum anlamına mı geliyor?
1.9. Şu an Apache 1.x kullanıyorum ve Subversion arşivlerini sunmak için Apache 2.0 kuramam. Bu bir Subversion sunucusu çalıştıramayacağım anlamına mı geliyor?
1.10. Neden SCM'nin Y sistemi gibi bir X sistemi kullanmıyorsunuz?
1.11. Neden tüm arşivim aynı revizyon numarasını paylaşıyor? Tüm projelerimin kendinlerine ait revizyon numaralarının olmasını istiyorum.
1.12. Subversion `changeset' özelliğine sahip mi?
1.13. Subversion'ın yeni sürümü ne zaman çıkacak?
1.14. Subversion sembolik bağları destekliyor mu?
1.15. Subversion'ın yüksek çözünürlükte bir logosuna ihtiyacım var. Bunu nereden bulabilirim?
1.16. Sormak istediğim başka sorularım var. Daha fazla bilgiye nereden ulaşabilirim?

1.1. Neden böyle bir proje mevcut?
CVS kullanıcısını ele geçirmek için. Yapmaya çalıştığımız daha çok CVS'in eksik birçok yanını tamamlayarak yeni bir sürüm denetim sistemi oluşturmak. Daha fazla bilgi için anasayfamıza bakabilirsiniz.
1.2. Subversion mülkiyeti özel bir yazılım mı? Subversion'ın CollabNet'e ait olduğunu duydum.
Hayır, Subversion açık kaynak kodlu, özgür bir yazılım. CollabNet sadece tüm zamanını yazılım geliştirmeye harcayan geliştiricilerin ücretlerini ödeyerek, yazılım kodunun telif haklarını, Debian Özgür Yazılım Kılavuzu ile uyumlu Apache/BSD-tarzı bir lisans ile, elinde tutuyor. Diğer bir ifadeyle, Subversion'ı CollabNet ya da başka birinden hiçbir şekilde izin almaya gerek kalmadan, istediğiniz şekilde bilgisayarınıza yükleyebilir, Subversion'ın üzerinde değişiklikler yapabilir ve onu dağıtabilirsiniz.
1.3. Kendi projelerimde kullanmak için Subversion yeterli kararlılığa sahip mi?
Evet, kesinlikle. Başlıca öneme sahip olan (`prime-time') üretimler için kullanıma hazırdır.
Subversion 2000 yılından beri geliştirilmektedir ve gelişiminden 1 yıl sonra kendi kendini sunabilecek hale gelmiştir. Bir yıl sonra "alpha" sürümü duyurulduğu zaman ise zaten düzinelerce geliştirici ve şirket tarafından kullanılmaktaydı. Alfa sürümünün duyurulmasından sonraki iki sene boyunca, yazılım 1.0 sürümüne ulaşana kadar, hataları düzeltilip daha yazılımın kararlı bir hale gelmesi sağlandı. Yazılımı 1.0 ile çağırmamayı biz ne kadar uzun tutmaya çalışsak da, bir çok insan 1.0 sürümüne çıkmadan önce bile, Subversion'ı 1.0 sürüm numarası ile çağırıyordu. Şunun da farkındaydık ki, bir çok insan Subversion'ı kullanmak için 1.0 sürümünü bekliyordu ve yazılım hakkında bu sürüm etiketine bağladıkları çok farklı beklentileri vardı. Ve biz de bu standardı bozmadık.
1.4. Subversion'ın istemci/sunucu uyumluluğunda izlediği yöntem nedir?
İstemci ve sunucu tarafı sürüm numaralarının ilk kısımları aynı olduğunda uyumlu çalışacağı düşünülüp, bu şekilde tasarlanmıştır. Şöyle ki: 1.X sürümüne sahip bir istemci, 1.Y sürüm numaralı bir sunucu üzerinde çalışabilecektir. Fakat şu da unutulmamalıdır ki, sürüm numaraları farklı istemci ve sunucular arasındaki iletişimde bazı işlemlerin kullanılamayacak olması olasılığı vardır.
Sunucu ve istemcinin birlikte işlerlik politikası HACKING dosyasının "Compatibility" (Uyumluluk) kısmında belgelenmiştir.
1.5. Subversion hangi işletim sistemleri üzerinde çalışabilir?
Günümüzdeki tüm Unix, Win32, BeOS, OS/2, MacOS X türevlerinde çalışabilir.
Subversion ANSI C ile yazılmış olup, APR ()Apache Portable Runtime) kütüphanesini taşınabilirlik katmanı olarak kullanmaktadır. Bu nedenle Subversion, APR'nin çalıştığı her platformda (ki bu neredeyse tüm platformları kapsıyor) rahatlıkla çalışabilir. Subversion'ın sunucu (arşiv) tarafı ise dosya sistemi BDB olmadığı sürece Win9x platformlarda da çalışmaktadır. (Çünkü Berkeley DB'nin Win9x sistemlerdeki paylaşımlı bellek kısımlarında bazı sorunları var.) 1.1 sürümünde kullanılmaya başlanan FSFS arşivleri bu kısıtlamaya sahip değildir. Fakat Win9x sistemlerdeki dosya kilitleme mekazimasındaki bir kısıtlamadan dolayı FSFS de Win9x sistemlerde çalışmamakta. Ama FSFS için bu kısıtlamanın da 1.1.2 sürümünde ortadan kalkması için çalışılıyor.
Toplamak gerekirse; Subversion istemcisi APR'nin çalıştığı her platformda; Subversion sunucusu ise yine, arşivi Win95/Win98/WinMe sistemlerde tutamasa bile, APR'nin çalıştığı her platformda çalışabilir.
1.6. Bu yeni dosya sistemi nasıl bir şey? Ext2 benzeri bir şey mi yoksa?
Hayır. "Subversion dosya sistemi" çekirdek seviyesinde, işletim sistemlerine kurulabilen bir dosya sistemi değildir. Bunun yerine, Subversion'ın arşiv tasarımı için kullanılan bir terimdir. Arşiv, veritabanı üstüne kurulmuş olup, sürüm numaralarına sahip bir dosya sistemini taklit eden bir C API'si sunuyor. Bu yüzden arşive erişen bir yazılım için yazmak, diğer dosya sistemleri için yapılanlara benzer. Normal bir dosya sistemi ile Subversion dosya sistemi arasındaki ana fark ise, Subversion dosya sisteminde, herhangi bir dosya/dizin yenisi ile değiştirilse ya da silinse dahi, arşivde kendine ait bir sürüm numarası ile varlığını korur.
1.7. Subversion'ın bir Apache eklentisi olduğunu duydum. Subversion sunucular için ne kullanıyor?
Hayır. Subversion bir çeşit kütüphaneler topluluğudur. Yanında bu kütüphaneleri kullanan bir komut satırı istemcisi ile gelir. İki çeşit Subversion sunucusu vardır: svnserve, cvs pserver benzeri, başlı başına tek bir sunucudur ya da Apache httpd-2.0 ile mod_dav_svn modülü. svnserve özel bir protokol kullanırken, mod_dav_svn ağ protokolü olarak WebDAV kullanır. Daha fazla bilgi için Subversion kitabındaki 6. bölüme bakınız.
1.8. Yani bu Subversion kullanmak için Apache yüklemek zorunda olduğum anlamına mı geliyor?
Kısaca cevaplamak gerekirse: Hayır.
Eğer sadece bir Subversion arşivine erişmek istiyorsanız, istemciyi kurmanız yeterli. Eğer ağdaki bir Subversion arşivine ev sahipliği yapmak istiyorsanız Apache2'yi ya da svnserve'ü kurmalısınız.
Ağ üzerinden ulaşılabilir bir Subversion sunucusu kurmak için daha fazla bilgiye Subversion kitabındaki 6. bölümden ulaşabilirsiniz.
1.9. Şu an Apache 1.x kullanıyorum ve Subversion arşivlerini sunmak için Apache 2.0 kuramam. Bu bir Subversion sunucusu çalıştıramayacağım anlamına mı geliyor?
Hayır, Subversion sunucusu olarak svnserve kullanabilirsiniz. svnserve'de çok iyi bir şekilde çalışıyor.
Eğer WebDAV ve onun ile gelen diğer bir çok eklentiyi istiyorsanız, evet, o zaman Apache 2.0 kurmalısınız. Apache 2.0'ı başka bir port numarası üzerinde çalıştırırken, Apache 1.x'i 80. port altında çalıştırmak daima bir seçenek olmuştur. Apache'nin farklı sürümleri aynı makine üzerinde sorunsuzca çalışabilmektedir. Yapmanız gereken tek şey httpd.conf dosyasındaki Listen ibaresinin karşısındaki 80 değerini 8080 gibi istediğiniz bir değer ile değiştirmek ve arşivinizin URL'sini doğru port değeri ile vermek. (Örnek: http://svn.mydomain.com:8080/repos/blah/trunk/)
1.10. Neden SCM'nin Y sistemi gibi bir X sistemi kullanmıyorsunuz?
SCM (Kaynak Denetim Yönetimi [Source Control Management]) sistemlerinde yeni bir çığır açma ya da piyasadaki tüm SCM'lerin en iyi özelliklerini toplama gibi bir niyetimiz yok. Yaptığımız tek şey CVS'in yerine bir şeyler oluşturmak. Lütfen ilk soruya bakınız.
1.11. Neden tüm arşivim aynı revizyon numarasını paylaşıyor? Tüm projelerimin kendinlerine ait revizyon numaralarının olmasını istiyorum.
Arşivdeki genel bir revizyon numarasının kullanıcının bakış açısından hiçbir anlamı yoktur. Bu şema tasarımının asıl hedefine ulaşmasını sağlayan bir iç mekanizmadır. Bu sayede kullanıcı herzaman saçma sapan uzun tarih/zaman katarları yazmaktan kurtarılmış olur.
Revizyon numaraları sadece arşiv ve kullanıcı açısından kullanım kolaylığı ile ilgilidir. Bunun arşivde ne sakladığınız ile ilgili bir nedeni yoktur. Hatta arşivdeki revizyon numaraları projenin gerçek gelişimi hakkında isabetli bir tahmin yapmak için dahi yeterli değildir. Projenin gerçek gelişimi hakkında fikir sahibi olmanın çok daha karmaşık yolları vardır.
1.12. Subversion `changeset' özelliğine sahip mi?
Bu biraz yüklü bir soru. Çünkü changeset denildiği zaman neredeyse herkes ya farklı bir tanım ile yaklaşıyor ya da bir sürüm denetim sistemi changeset özelliği sunduğu zaman herkesin beklentisi farklı oluyor.
Bu ufak tartışmanın amacı doğrultusunda changeset'in ufak bir tanımını şu şekilde verebiliriz: Tek bir etiket altındaki değişikliklerin bir toplamı. Değişiklikler düz bir metin dosyası üzerinde olabileceği gibi, dizin yapısındaki düzenlemeleri ya da metadata ayarlamalarını da içerebilir. Daha genel anlamda, changeset sadece etikete sahip bir yamadır.
Subversion ilk sırada sürüm numaralarına sahip arşiv ağaçlarını yönetir (arşiv bu ağaçların toplamından oluşur) ve changeset'ler de bu arada türetilir. Arch ya da BitKeeper gibi sistemlerde öncelik changset'lerde olup (yani tüm arşiv bir yama deposudur) ağaç yapıları bu yamalar ile birlikte oluşturulur.
Kesin olarak ifade edilmeye çalışıldığında iki felsefenin de eksileri ve artıları var: hesap 30 yıl öncesine kadar gidiyor. Her ikisinin de geliştirilecek olan yazılımın türüne bağlı olaraktan iyi ve kötü yanları var. Bunu burada tartışmayacağız. Onun yerine, Subversion ile neler yapabileceğiniz hakkında bir açıklama bulacaksınız burada.
Subversion'da, global bir revizyon numarası olan 'N' arşivde bir ağacı etiketler ve bu sayede arşiv N. onaylamadan sonraki durumu görebilir. Bu ayrıca açıkca belirtilmiş bir changeset'in de etiketidir: Eğer N. ağaç ile N-1. ağacı karşılaştırırsanız, bu iki ağaç arasındaki onaylanmış kesin farkların bir yamasını elde edersiniz.
Bu sebepten dolayı, "N. revizyon"un sadece bir ağaç olmadığı kolayca anlaşılabilir olup, bunun ayrıca bir changeset olduğu da açıkça görülebilir. Eğer projenizdeki hataları herhangi bir durum takip sistemi kullanarak tespit ediyorsanız, revizyon numaralarını size ilgili hataların yamalarını vermeleri için kullanabilirsiniz. Örnek verecek olursak: "Bu durum 9238. revizyonda düzeltildi." şeklinde açıklamaya sahip bir arşiv kaydının düzeltilmesi için ilgili changeset'i svn log -r9238 çıktısı ile gördükten sonra, yamayı svn diff -r9237:9238 ile oluşturabilirsiniz. Buna ek olarak svn'nin merge komutu da revizyon numaralarını kullanır. Başka bir daldaki (branch) değişiklikleri kendi dalınıza aktarmak içinse, diğer dalın URL'sini parametreler arasına eklemeniz yeterli: svn merge -r9237:9238. Artık #9238 changeset'i de kendi çalışır kopyanıza eklenmiş oldu.
Düşünüdüğünde bu changeset'ler çevresine kurulmuş bir sistem için hiç de karmaşık değil, fakat hala CVS'e karşı uçsuz bucaksız bir kolaylık.
1.13. Subversion'ın yeni sürümü ne zaman çıkacak?
Proje durum sayfamıza bakabilirsiniz: http://subversion.tigris.org/project_status.html
1.14. Subversion sembolik bağları destekliyor mu?
Subversion 1.1 ve üstü sürümlerde normal svn add komutu ile sembolik bağ ekleyebilirsiniz.
Ayrıntıda ise, Subversion'ın kendi tuttuğu arşiv için sembolik bağ kavramı yoktur. Onun yerine sürüm numarasına sahip sembolik bağları svn:special özelliği ekleyerek normal bir dosyaymışcasına saklar. Unix istemcileri bu özelliği fark edip, çalışma kopyasında dosyayı bir sembolik bağmış gibi gösterir. Win32 istemcilerinin sembolik bağ özelliği olmadığından dolayı dosyanın bir sembolik bağ olduğunu algılayamaz ve normal bir dosyaymış gibi gösterir.
1.15. Subversion'ın yüksek çözünürlükte bir logosuna ihtiyacım var. Bunu nereden bulabilirim?
Subversion'ın logosunun vektörel biçimleri de mevcut olmak üzere, Subversion arşivine ve logoların bulunduğu dizine bakabilirsiniz.
Özel olarak logoların EPS ve Adobe Illustrator biçimleri de mevcut.
1.16. Sormak istediğim başka sorularım var. Daha fazla bilgiye nereden ulaşabilirim?
Lütfen merak ettiğiniz sorularınızı Subversion Kullanıcılar Grubunun e-posta listesine gönderiniz. Diğer bir seçenek olarak ise bir çok Subversion kullancısını etkin olarak bulabileceğiniz irc.freenode.net IRC sunucusundaki #svn kanalına bakabilirsiniz.
Önceki Üst Ana Başlık Sonraki
VII. Oylum - Subversion SSS Başlangıç Neyi Nasıl Yapabilirim?
Bir Linux Kitaplığı Sayfası