15 Eylül 2010 Çarşamba

TFS Bileşenleri 1/5 - Kaynak Kod Kontrolü

TFS'in pek çokları tarafından kullanılmaya başlayan ilk bileşeni muhtemelen kaynak kod kontrol sistemidir. Küçük kardeşi Visual Source Safe (VSS)'in aksine oldukça maharetli bir sistemdir.

Peki ne özellikleri var? VSS den çok mu farklı yani ?


Evet çok farklı...

VSS paylaşılan bir klasör üzerinde dosya olarak çalışır. Bu nedenle oldukça yavaştır. Özellikle çok kullanıcılı durumlarda ya da ağ üzerinde uzak bir noktadan erişilmeye çalışıldığında saç baş yoldurur.
TFS kaynak kod kontrol sistemi ise dosyaları VSS'in aksine, SQL veritabanı içerisinde saklar. Dolayısı ile gerektiği kadar güçlendirmek ve ölçeklendirmek mümkündür. Ayrıca istemcilerle iletişimi de tamemen web servisleri üzerinden olduğu için ağ üzerindeki uzaklıktan bağımsız olarak son derece hızlı çalışır. Zaten yüksek kullanıcı sayısı için tasarlanmıştır. Altına yeterli güçte bir donanım koyduğunuzda milyonlarca dosyayı, binlerde kullanıcyı duymaz bile.

Tüm işlemler atomik yapıda çalışır. Yani 100 dosyayı sunucuya iade ederken 99ncu dosyada çakışma çıkarsa tüm yapılan işlem geri alınır. Sunucudaki dosyalar yarı pişmiş halde bırakılmaz.

TFS aynı dosyayı aynı anda birden fazla kullanıcının üzerine almasına izin verir. Oluşacak muhtemel çakışmaları da oldukça iyi yönetir. İstenildiğinde dosyaların sadece bir kullanıcı üzerinde olmasına imkan sağlar (Lock) Otomatik birleştirme (auto-merge) algoritmaları son derece başarılıdır. Genelde kullanıclar sisteme çamur atma eğiliminde olsa da günün sonunda TFS'in işini doğru yaptığı ortaya çıkar. Kodların başına birşey geldiyse hata muhtemelen sizdedir.

Dosyalar TFS üzerinde aynen windows'un klasör yapısına benzer sanal bir ağaç yapısında saklanır. TFS açısından dosyaların içeriği önemli değildir. Onun açısından hepsi birer metin dosyasıdır. VB, C# ya da başka birşey olmasıyla pek ilgilenmez. Hatta daha önceden adı Teamprise olan, daha sonradan Microsoft'un satınalmasıyla Team Explorer Everywhere adını alan eklenti sayesinde Eclipse ortamı üzerinde Java dünyasına da girer, Java kodlarını sa memnuniyetle saklar.

TFS dosyaların tüm tarihçelerini saklar. Herhangi bir dosyanın herhangi bir zamandaki haline ulaşmak. Tüm geçmiş sürümlerini görmek ya da herhengi iki sürümünün arasındaki farkları görmek mümkündür.
(File History) Hatta bunun bir adım da ötesine geçerek bir dosyanın üzerindeki her bir satırın hangi tarihte kim tarafından neden yazıldığını görmek mümkündür (Annotate).

Çok güçlü bir branch mekanizması vardır. Kaynak kod ağacının herhangi bir noktasına aşağı farklı ve çok kademeli dallar oluşturmaya izin verir. (Branch). Farklı dalların üzerindeki değişiklikleri çift yönlü olarak birleştirebilir (Merge). Farklı dallar üzerindeki dosyaların ilişkilerini takip etmeye devam eder ve özellikle TFS 2010'da gelen yeni özellikler sayesinde herhangi bir dalda yapılan bir değişikliğin "Merge" işlemleri ile adım adım hangi dallara aktarıldığını takip etmek mümkündür.

TFS'in rafları vardır. Yani bir kullanıcıya üzerindeki tüm değişiklikleri sunucu üzerinde bir rafa kaldırma (Shelve), daha sonra başka bir noktada raftan tekrar bilgisayara indirme (Unshelve) şansı verir. Bu mekanizma kod gözden geçirme çalışamalarında ve özellikle check-in edilmeye hazır olmayan kodları saklamada ya da makinadan makinaya taşımada çok kullanışlıdır.

Son olarak gelişmiş bir yetkilendirme sistemi vardır. Kaynak kod ağacının herhangi bir noktasında, branch'ler üzerinde, ya da dosya bazında kişilere ya da gruplara ayrıntılı yetkiler tanımlanmasına olanak tanır.

Kaynak kod sistemi özellikle Work Item sistemi ile olan entegre çalışması sayesinde müthiş olanaklar sağlar ama bu konuya Work Item sistemini anlatırken geleceğiz.

Sırada: Work Item Tracking...

1 yorum: