
Merhabalar,
Bu konu hakkinda bir yazi yazacagim aklima gelmezdi, cunku nedense kafamda her developer bir sekilde bu sistemlerle asinadir ve neyi nasil yapacagini biliyordur diye bi izlenim olusmus. Gecen hafta yeni bir proje grubuna baslarken yeni gelen arkadaslarin boyle sistemlerden haberdar olmadigini ve temel yapiyi anlatmaya basladigimi gorunce genel olarak bu sistemleri anlatan bir yazi yazmanin faydali olacagini dusundum.
Versiyon kontrol sistemleri (Version Control Systems veya Revision Control Systems) agirlikli olarak yazilim gelistirme prosesinin bir parcasi olarak dusunulse de genel kavram olarak herhangi bir dosya veya dokumandaki degisiklikleri takip edebileceginiz yazilimlardir.
Yazilim dunyasindaki kullanimi ise cogunlukla herhangi bir koddaki degisiklikleri takip etmenizi saglar.. Ama tabii ki proje dokumanlarini da bu yapi altinda bulundurdugumuz zamanlar oluyor.
Bu yazimda temel source kontrol yapisindan bahsedecegim ancak bunlarin buyuk cogunlugu proje dokumanlari icin de gecerli olacaktir. Temel olarak cogu versiyon kontrol sistemi belli basli bazi islemleri yapabilecek yapilari icerir:
- Sistemde var olan dosyanin son versiyonunu almak ( Check-out )
- Sisteme bir dosyanin degisikligini gondermek ( Check-in )
- Sistemdeki dosyanin baska biri tarafindan degistirilmesini engellemek ( Lock )
Bunlarin disinda yazilim gelistirme sureclerinde branch ve trunk tabirleriyle karsilasabilirsiniz. Kisaca anlatmam gerekirse trunk devam eden projenin gelistirme surecinin en son halinin tutuldugu genellikle stabil olmayan ve surekli gelistirmeye acik bir versiyonudur. Branch ise belirli ozellikleri trunk'tan farkli olabilen ornegin X modulunu icerir ancak trunk'ta X modulu yoktur. Bu modulun gelistirmesi branch'ta yapilir ve ana kodu etkilemez. Bir diger farkli tabir ise merge.. Merge biraz evvel verdigim ornekten yola cikarsak, X modulunun branch'ta gelistirmesi tamamlandiktan sonra trunk tarafina alinmak istenebilir iste bu birlestirme islemi merge olarak adlandirilir.
Bu tabirlerin disinda farkli sistemlerde farkli tabirler ile karsilasabilirsiniz.. Ornegin commit, get latest, update gibi.. Bunlar sadece ayni seylerin farkli isimlendirmesidir.. Commit, check in le ayni seydir ancak birden fazla dosyayi ayni anda checkinlemek icin de kullanilir.. Get Latest = Update = Check-out
Son olarak piyasada en fazla kullanilan versiyon kontrol sistemlerinin bir listesini paylasmak istiyorum. Bunlarla asina olursaniz sizin faydaniza olacaktir..
- Subversion
- Visual Source Safe
- TFS ( Team Foundation System )
- GIT
Bunlarin disinda en fazla kullanilan ve bu sistemlere baglanmanizi saglayan client tool'lar ise,
- Tortoise ( Subversion )
- AnkhSVN ( Subversion - Visual Studio integrated )
- Team Explorer ( Built-in tool at Visual Studio )
- SmartGit ( GIT )
Umarim sizleri bu sistemlere biraz da olsa asina edebilmisimdir.. Herkese kolay gelsin..