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.