| « Generics Üzerine | Windows 1.0 nasıl bir şeydi ? » |
Source Control
Neden source control kullanmanız gerektiği konusunda hilafetlerde bulunmayacağım, bu yazı hangi tool'un iyi olduğu ve source control'ü nasıl kullanmanız gerektiği konusunda tavsiyeler içerecek.
Öncelikle piyasada genellikle kullanılan source control araçları şöyle;
* Microsoft Source Safe ($)
* Microsoft Team Suite ($)
* SourceDepot ($)
* Perforce ($)
* Bitkeeper
* SVN
* CVS
Kullanmak istemeyecekleriniz;
Microsoft Source Safe
Source Safe'in repository ile ilgili ciddi sorunları var, benim başıma hiç gelmedi ama rastgele bir günde repository'nin bozulması ile karşılaşan arkadaşlarım var. Kullandığı veritabanının garip bir mantıkta olması vs gibi şeylerde kurtarma gibi fonksiyonları unutmanız anlamına geliyor.
Bunun yanında source safe veritabanını network share üzerinden kullanır bunun anlamı source safe'e internet üzerinden erişmeyeceniz demek. gerçi bunu halletmek için paralı bir araç daha var ama bana pek mantıklı gelmedi. Bunların yanında kullanıcı yönetimide ayrı bir facia.
Akıllı bir tag, branch mekanizması olmadığı için veritabanı kısa sürede gb boyutlarına gelebilir.
Asla kullanmayın.
Bitkeeper
Linux kernel'in tutulduğu bu source control aracı linux sevenler tarafından beğenilebilir ama gördüğüm bir kaç screenshot üzerinden bu tool'u normal bir insanın kullanması zor. Bu tür tool'lar takım tarafından kullanılacağı için basit olması en öncelikli kural.
Teknik özelliklerini pek fazla incelemedim ama sadece geliştirilme amacına hizmet ediyormuş gibi gözüktü bana. Microsoft ortamlarında geziyorsanız muhtemelen beğenmeyeceksinizdir.
Microsoft Team Suite
Aslında bir source control 'dan daha fazlası var bu tool'un içerisinde ancak halen eski Source Safe üzerine yapılan eklemeler ile çalışıyor. Buda kullanmamak için yeterli bir sebep.
Kullanılabilir araçlar;
SourceDepot
Microsof'un kendi kodlarını tuttuğu tool. Hiç görmedim, bakmadım ancak fiyatının can yakacağını düşünüyorum. Yanlış hatırlamıyorsam Perforce'un modify edilmiş hali.
Perforce
Parayla satılan source control'ler içerisinde en populer araç. Ancak client başına lisansı çok yüksek. Aynı özellikleri sağlayan bedava araçlar varken tercih etmek mantıklı gelmiyor.
TCP/IP üzerinden çalıştığı için uzak lokasyonlardan bağlantıları destekliyor. Şimdiye kadar kullanmadığım için hakkında bildiklerim bu kadar.
CVS
İlk olarak unix üzerinde geliştirilmiş ancak şu an windows üzerinde gayet güzel çalışıyor. Performans ile ilgili sorunları var ancak bir çok yerde kullanılıyor bu yüzdende tonlarca yan araçları var. Sorun çıktığında da çözümleri çok kolay bulabiliyorsunuz.
Text formattaki dosyaları tutmak için tasarlandığından diğer formattaki (.doc gibi) dosyaları kaydetmek için sorunlar yaşayabilirsiniz.
Repository bir çok yerden sunulabiliyor, ister yerel diskinizden , istersenizde ssh destekli bir porttan repository'ye ulaşabiliyorsunuz.
Karar vermeden önce bu sisteme alternatif olarak geliştirilen SVN'ye bakmanızı öneririm.
SVN
Favorim. Bu yüzdende anlatacaklarım çok;
Akıllı bir tag,branch mekanizması olduğu için yeni bir versiyon üretmeniz sistemde çok az yer tutuyor. (aslında sadece bir numara)
Text dışında binary formattaki dosyaları kolayca tutabiliyorsunuz. Dosyalar üzerinde Property desteği sayesinde sadece dosya dışında bu özelliklerle dosyaları tag'layabiliyorsunuz.
Repository'i yerel bir diskte tutabileceğiniz gibi svnserve denilen bir windows servisi ile sunucuda tutabilirsiniz. Ancak svnserve ile host ettiğinizde kullanıcı yönetimi diye user=password yazılan bir dosyadan ibaret. Bunun yerine apache üstünden host etmenizi tavsiye ederim. Üstüne svnserve'den daha performanslı çalışıyor.
Apache üzerinden host ettiğinizde kullanıcı yönetimi apache'ye kalıyor bu durumda da ldap'a kadar kadar kapılarınız açık. Şifreleme için apache'ye SSL için bir sertifika vermeniz yeterli.
VisualStudio ile entegrasyon için bir kaç tane tool var ama kullanmanızı tavsiye etmem bunun yerine TortoiseSVN adındaki explorer içerisine yerleşen bir programı kullanmanız daha iyi. Bu sayede şirkete yeni aldığınız hiç bişey bilmeyen personele visual studio içerisinde projelere .doc dosyalarını nasıl eklemesi gerektiğini öğretmek zorunda kalmazsınız.
TortoiseSVN'yi kullanmak için hiçbişey bilmeyen takımınıza bile export, update, commit komutlarını öğretmeniz yeterli.
CSV dışında bu tool ile farklı bir mantık var, kodda değişiklik yapmak isteyen birisi dosyayı kilitlemek zorunda değil, SourceSafe gibi toolarda bu kilitler başınızı ağrıtabilir. Değişiklikler yüzünden bir çakışma olduğunda (-ki bunu SVN kendisi söylüyor) Çakışmalar düzeltikdikten sonra commit edebiliyorsunuz.
SVN ile CSV arasındaki farkları anlatan bir çok döküman var, bunları görmek için
adresinden bakabilirsiniz.
Bir sonraki yazımda kendi çalıştığım firmada svn'yi nasıl kullandığımızı anlatırım.