İster kendi kendinize çalışın ister binlerce kişilik bir ekipte yer alın, teknolojinin geldiği bu aşamada bir sürüm kontrol sistemi kullanmadan kod yazmanın çok zor (ama imkansız değil) olduğuna inanıyorum.
Öğrenci gözünden bakınca bile bu böyle. Öyle ki 3-4 kişilik bir ekibiniz varsa, eğer gerçekten grup olarak sürekli bir şeyler geliştiriyorsanız ve ekip içi koordinasyonunuzu otomatize bir sistem kullanmadan sağlıyorsanız gerçeken çok başarılısınız demektir.
Geçen sene okul projesi olarak aynı dönem içerisinde hem C# kullanarak bir otomasyon hem de Java EE kullanarak basit bir dosya paylaşım sitesi yazdık. Ekibimiz 5 kişiden oluşmaktaydı. Sık sık toplaşalım da kod yazalım şeklinde bir mantık bizim ekibimize uymadı. Özellikle hafta sonu herkes farklı illerde olduğu için bu büyük bir problemdi. Kendi projelerim ve katkıda bulunduğum diğer projeler dışında tüm geliştirme sürecinin içinde yer alarak sürüm kontrol sistemini deneyimlediğim ilk projelerim bunlardı.
Bu süre içerisinde Microsoft, Visual Studio Online servisini duyurdu.Bu servisin en güzel yanı hem git hem de Team Foundation Server için sürüm kontrolünü desteklemesiydi.
Yani hem Eclipse hem Visual Studio kullanacak, hem iki farklı sürüm kontrol sistemini deneyebilecek ve bunları tek bir servis altından yönetebilecektik. Üstelik Visual Studio Online, servis yeni olduğu için ilk 3 ay tüm özellikleri açık olarak hizmet veriyordu.
Bu yüzden aynı anda iki farklı sürüm kontrol sistemiyle çalışmaya başladık.
Öncelikle şunu söyleyeyim git, mükkemmel bir sürüm kontrol sistemi. Linux çekirdeği, Android vs. büyük projeler git alt yapısında geliştiriliyor. Ayrıca git’i Google, Facebook, Microsoft, Yandex vb. bir çok büyük teknoloji firması da çeşitli projelerinde kullanıyor.
Team Foundation ise Microsoft Visual Studio kullanıyorsanız çok daha etkin kullanabileceğiniz ve Microsoft servisleriyle entegre çalışabilen başka bir sürüm kontrol sistemi.
Daha eski ancak hala kullanılan subversion gibi bir çok farklı sürüm kontrol sistemi de var.
Sürüm kontrol hizmeti veren servisler genelde hata kontrol ve yönetimi için de modüller barındırıyorlar.
Kısaca toparlamak gerekirse bir sürüm kontrol ve hata kontrol sistemi kullanmanız için nedenleri şöyle sıralayabiliriz:
- Açık kaynak kodlu ve ücretsiz olarak git gibi bir sürüm kontrol sistemine geçebilirsiniz, çok bir maliyeti yok.
- Bırakın binlerce kişinin geliştirdiği bir projeyi tek başınıza bile bir şeyler geliştiriyor olun, her zaman hata yapmanız mümkün. İstenilen bir tarihe geri dönebilmeniz gerekli.
- Kimin ne zaman ne yaptığını ve nasıl yaptığını aşama aşama görmeniz gerekir, bu da projenin geliştirilmesi sırasında diğer geliştiricilerinin neler yaptığını anlamanızı kolaylaştırır.
- Yapılan her değişikliğin neden yapıldığını bilmek de önemli.
- Bir proje bir değil birden fazla dalda geliştirilebilir. Örneğin bir kararlı sürüm varken bir de beta sürüm olabilir. Bu iki sürüm arasında kod alış-verişi yapılması gerekebilir ve kodlarını ayrı ayrı yönetmek gerekebilir.
- Bir sürüm release ettiğiniz anda kodun durumunu saklamanız gerekebilir.
- Bir projeyi ne kadar modüler de geliştirseniz kodu facebook ya da taşınabilir bellek ile taşımak çok da mantıklı değil ve bunu parçaları birleştirecek kişiye Allah kolaylık versin 🙂
- Her değişikliği yapıldığı anda görmek, yayınlamak ya da test etmek isteyebilirsiniz. Yapılan değişikliklerin build olup olmadığını test etme işini otomatikleştirebilirsiniz.
- Açık kaynak bir projeye katkıda bulunmak isterseniz muhtemelen bir sürüm kontrolü kullanıyorlardır.
- Sürüm kontrol sistemi kodlamayı daha sosyal ve etkili hale getiriyorlar. Örneğin: github.Ayrıca grup içi sohbet gibi güzel uygulamalarla da kullanabilir. (HipChat gibi)
- Bir çok IDE artık sürüm kontrol sistemleriyle beraber çalışıyor ve komut satırına inmenize gerek bile kalmıyor.
- Bir hata oluştuğunda daha fazla büyümeden geliştiricilere bildirilmesi gerekir.Projeden çalışan diğer kişilerin de aynı hatadan haberdar olması faydalıdır.
- Bir hatanın oluştuğu andan çözülene kadar geçen sürece birden fazla kişi dahil olabilir, hata ile ilgili daha fazla bilgi istenebilir. Hatayı çözmeye çalışan birileri varsa, bunun bilgisinin iletilmesi gerekebilir. Hatayı çözmekle yükümlü kişi ya da kişiler belirlenerek onlara iş atanması gerekebilir.
- Sürüm kontrolüyle hataları düzeltmek mantıklı bir çözüm olabilir.
- Artık Dünya’da hakim olan bir çevik yazılım geliştirme felsefesi var.
Listeyi uzatmak mümkün.
Sürüm kontrol sistemleriyle henüz tanışmamış arkadaşlar aşağıdaki servislere ve uygulamalara göz atabilirler:
Git:
Oldukça popüler dağıtık bir sürüm kontrol sistemi
Github:
Geliştiriciler için bir git servisi, aynı zamanda sosyal özellikleri de var. Açık kaynak projelerinizi ücretsiz depolayabilirsiniz. Kapalı kaynak için ücretli.
BitBucket
Git ya da Mercurial için depolama hizmeti ve hata takibi vs. hizmetler sunan bir web sitesi. Atlassian firması tarafından yönetiliyor. JIRA, HipChat gibi hizmetleri de var. 5 kullanıcıya kadar ücretsiz.
Visual Studio Online
Microsoft’un git ya da TFS hizmeti sunduğu platform. Çevik süreçlerle ilgili araçlar, sürekli entegrasyon gibi ücretli özellikleri de var. 5 kullanıcıya kadar ücretsiz.
GitLab
GitHub’un kendi sunucunuza da kurabileceğiniz benzeri.
Bugzilla
Yazılım geliştirme sürecini yönetebileceğiniz sunucu yazılımı
RedMine
Ruby On Rails ile yazılmış proje yönetim yazılımı
Aklıma gelenler şimdilik bu kadar, eklememi istediğiniz yazılımlar varsa yorum olarak ekleyebilirsiniz.
Bir cevap yazın