SiberKültür 101: Internet kültürü, web dedikoduları ve web tasarımı ve geliştirme konusundaki tüm açlığınızı giderir.
SVN nedir?

Uzun zamandır aklımda olan, uzun zamandır kullandığım ve anlatmak istediğim hayat kurtaran bir fikir: SubVersioN (SVN).
SVN'i anlatmanın en kolay yolu bir örnek üzerinden gitmek. Bir proje geliştirdiğinizi düşünün. Ekibiniz küçük veya büyük farketmez, aynı dosyalardan çalışmak ve hızla ilerlemek zorundasınızdır. Bu tür çalışmalarda en fazla rahatsızlık veren durum her zaman takımdaki kişilerin yaptığı düzenlemelerin, yine takımdan birisinin yaptıklarıyla çakışmasıdır. Sizin yaptığınız bütün değişiklikler, bir başka kişide var olmayacağı için o dosyayı farkında olmadan sizin yaptıklarınızın üzerine atar ve bir anda tüm yaptıklarınız ezilir.
Bu gibi durumlarda ya takım arkadaşlarınızla çok iyi bir iletişime sahip olmalısınız ya da her zaman elinizde yaptıklarınızın yedeği bulunsun ki bir sürü zaman harcayarak çakıştığınız noktaları birleştirmeye uğraşın.

Tüm bunlar bir işkence değil mi?
O zaman SVN kullanabilirsiniz. Üstelik bir takım çalışması da olmak zorunda değil, tek başınıza çalışsanız bile. SVN basit olarak belirlediğiniz klasörleri, içindeki dosyaları versiyonluyor. Bir SVN sunucusu sayesinde (bu kişisel bilgisayarınız da olabilir) proje üzerinde yapılan en ufak değişiklik bile versiyonlanıyor ve veritabanına kaydediliyor. Ekip çalışanları bu dosyalara ulaşmak istediğinde bir SVN programı sayesinde dosyaları bilgisayarlarına çekip, çalışmalarını yapabiliyorlar. Güncelleme işlemi tamamlanınca tüm ekip uğraşmadan yeni dosyalara erişebiliyor.
Neler gerekli?
SVN Mac de dahil bir çok platformu destekliyor. Dilerseniz bir SVN sunucu yazılımını web sitesinden indirebilirsiniz.
Ekip çalışanları SVN sunucusundaki dosyalara erişmek için bir SVN yazılımı kullanmak durumdadırlar. Benim tercihim TortoiseSVN'den yana.
Nasıl çalışıyor?

SVN üzerinde çalışma mantığı ise oldukça basit. SVN sunucusuna tanımlanan bir proje, çalışanlarda bulunan TortoiseSVN yardımıyla kendi bilgisayarına indiriliyor. Yani sunucudaki dosyaların birer kopyası çalışan insanlarda oluyor. Çalışan kişi dosyalarda istediğini değişikliği yaptıktan sonra TortoiseSVN yardımıyla dosyaları SVN sunucusuna atabiliyor. Böylece diğer çalışanlar SVN projesini güncellediğinde o kişinin yaptığı tüm değişiklikler onların da bilgisayarlarına yansıyor.
Eğer iki kişi aynı dosyada çalıştıysa ve bir şekilde çakışma yaşandıysa TortoiseSVN bu çakışmayı gidermek için elinden geleni yapıyor. Eğer değişiklikler dosyada aynı satırlarda değilse (mesela birisi en üstte, diğeri en altta çalışıyorsa), TortoiseSVN bunları rahatlıkla birleştirebiliyor. Eğer çalışma aynı satırlardaysa bu sefer bir uyarı alıyorsunuz ve size çakışan yerleri gösteriyor. Ancak birleştirme işlemini yapamadığı için size gösterdiği farklılıklardan birleştirmeyi sizin yapmanız bekleniyor, çok daha kısa süren bir işlem.
Kimler için?
İster bir ekip çalışması olsun, isterseniz tek başınıza çalışın her türlü web projesi için kullanmanız oldukça faydalı olacaktır. Versiyonlama sistemi saysinde çakışmaları engellediği gibi, geriye dönüp tüm yapılan değişiklikleri de görebiliyorsunuz. Bundan 2 ay önce yaptığınız, fakat kaybettiğiniz bir dosyayı SVN üzerinden çıkarmak oldukça basit.
Son olarak popüler çevirim içi geliştirme platformları SourceForge ve Google Code da SVN kullanıyor.
Yorumlar
15/07/2008 - 16:14
SVN gerçekten çok başarılı bir sistem. Kendisiyle ilk olarak Google Code aracılığıyla tanıştım ve yakın zamanda ofisimizdeki sunucuya bir de SVN sunucusu kurduk, mutlu mesut yaşıyoruz. Önde gelen web geliştirme ortamlarının da bütünleşik SVN desteği olduğunu hatırlatmakta fayda var. Örneğin biz ağırlıklı olarak Aptana kullanıyoruz ve "Subversive" eklentisi sayesinde proje görünümünde çok etkin bir şekilde hangi dosyanın hangi sürümde olduğunu görebiliyor, kod güncellemelerini rahatlıkla yapabiliyor ve çakışmaları da yan yana görüp düzenleyebiliyoruz.
Faydalı yazı için teşekkürler ;)
15/07/2008 - 16:22
Güzel bir yazı. SVN çok güzel bir teknoji yeni tanışan arkadaşlar "Eee, tamam güzelmiş. Ama nasıl kullanabiliriz bunu?" diye sorabilirler. Kurulumu ve kullanımı ile ilgili bir kaç link paylaşmak istiyorum bu sebeple çünkü bende ilk tanıştığım zamanlarda sıkıntı yaşamıştım nedense kaynak bulmakta.
15/07/2008 - 16:24
Bağlantılar için teşekkürler Gürkan.
16/07/2008 - 08:29
Zamanında cvs'i kurmak istemiştim ama tam istediğim gibi olmamıştı. Ya subversion cvs'ten daha kolaymış ya da bugün şanslı günümdeyim :) Herşey problemsiz çalıştı.
Client olarak da http://subclipse.tigris.org/install.html adresinden subclipse'i kurdum.
Çalışmalarıma çok katkısı olacak bu yazının. Harika yazı çok teşekkürler.
22/07/2008 - 16:30
Ben de bu konuda kısa bir araştırma yapıyordum. Yazınız oldukça aydınlatıcı oldu.
Yalnız benim bir sorum var. Tek server üzerinde bulunan çok kullanıcılı java dosyalarınsa svn kullanımında sorun yaşanıyormu?
02/12/2008 - 11:08
bilgilendirme için teşekkürler eminim çok işime yarayacak. Ben de sıkılmıştım aynı projeyi yedekleyip içlerinde boğulmaktan ...
28/01/2009 - 11:08
Güzel bir paylaşım teşekkürler...
04/04/2009 - 23:23
evet cok güzel bir olay bu
Yorumlama aparatı