24 Kasım 2010 Çarşamba

TFS Bileşenleri 3/5 - Doküman Yönetimi

TFS ile doküman yönetimi konusunda aslında söylenebilecek çok fazla şey yok. Daha önceden de söylediğimiz gibi TFS bir doküman yönetim aracı DEĞİLDİR.

TFS de "Work Item"ların yanına her türden dosyayı eklemek mümkündür. Bu şekilde WI ile ilgili bir dosyayı direk olarak yanyana koymuş olursunuz. Ama yapabilecekleriniz bununla sınırlıdır. WI'ların yanına iliştirilmiş dosyaların adında ya da içinde arama yapmak, versiyonlamak, dosyaları topluca bir yere kopyalamak hatta listelemek bile mümkün değildir.

TFS doküman yönetimi konusunda daha çok amcaoğlu Sharepoint'e güvenir.
TFS sistemi kurulum sırasında sizi en azından bir Sharepoint Services sistemi kurmaya yönlendirir, Eğer kurumunuzun hazır bir SP sistemi varsa TFS'i bu sistemi kullanacak şekilde ayarlayabilir ve SP'in bu konudaki olanaklarından faydalanabilirsiniz.
Sharepoint zaten tam ve kapsamlı bir doküman yönetim aracı olduğu için burada anlatmaya gerek yok.

Yine TFS açısından bakıldığında tavsiye edilen kullanım; dokümanları WI ların yanına eklemek yerine sistemli bir şekilde SP üzerinde saklamak, WI ile ilişkilendirmek gerektiğinde ise WI ın yanına dosyanın SP linkini eklemektir. Bu şekilde hem WI ile dosya(lar)ı eşlemiş olursunuz, hem de dosyaların adam akıllı yönetebilirsiniz.

Gelelim işin eleştirel tarafına...

CMMI vs gibi süreç sistemleri ile uğraşanlar bilirler projeler sırasında belirli noktalarda dayanak (Baseline) almak icap eder. Bu "dayanak" dediğin şey aslında tüm iş ürünlerinin projenin belirli bir anındaki fotoğrafıdır. Kendi içinde tutarlı bir iş ürünleri kümesidir.
Neye yarar? Projenin belirli bir andaki durumuına dönüp bakmaya yarar. Yani mesela, 2nci faz tamamlandığı zaman alınan dayanağa bakarak gereksinimlerin o andaki durumu neymiş, buna dayanarak nasıl bir çözüm tasarlanmış, ne kadarı gerçeklenmiş ne kadarı test edilmiş vs gibi şeyler görülebilir. Böyle anlatınca çok havalı durmuyor ama aslında oldukça faydalı birşeydir. Neyse...

TFS'in kaynak kod kontrol sistemindeki Label mekanizması bu iş için biçilmiş kaftandır. Kaynak kod kontrolü altındaki dosyaların belirli bir andaki belirli bir versiyon kümesine bir isim verilir ve daha sonra dosyalar bu isim ile çağırılabilir. Gel gelelim Label mekanizması sadece kaynak kod kontrolü altındaki dosyaları kapsar, SP üzerindekileri kapsamaz. Dolayısı ile SP üzerindeki dosyalar Label'lara dahil değildir. Halbuki dayanak alırken tüm iş ürünlerini kapsamak gerekir.
Cingözlük yapıp tüm dosyaları SP de saklamak yerine kaynak kod kontrolü altına almak bir seçenek olabilir ama pek iyi bir fikir değildir. Neticede kaynak kod kontrolü başka birşey, doküman yönetimi başka birşey. SP'in yerini tutmaz.


Uzun lafın kısası kaynak kod kontrol sistemi ile "work item" sistemi arasında çok güçlü bir versiyonlama ve izlenebilirlik mekanizması mevcuttur ancak iş ürünlerinin yine ciddi bir kısmının saklandığı doküman yönetimi ile bu şekilde bir ilişkilendirme yoktur. SP üzerinde saklanan dokümanların kendi içerisinde bir versiyonlaması olmasına rağmen kod dosyaları ya da work item'lar ile versiyona ya da zamana dayalı bir ilişki kurulamaz ve bence bu bir eksiktir. Aynen kod dosyalarında olduğu gibi "work item"'ların ve SP üzerindeki dokümanların da belirli bir zamandaki hallerine ilişkilendirilmiş olarak ulaşabilmek son derece faydalı olabilirdi.

Yine de ezmeyelim, SP zaten kendi başına son derece başarılı bir doküman yönetim aracıdır TFS ile sadece linkler üzerinden kurulacak bir izlenebilirlik ile de çok şey başarılabilir.

Makine ya da kullanıcı değiştirme

TFS kişilerin kaynak kod kontrolü altındaki dosyalarını; kişi adı, bilgisayar adı ve "workspace" adı üçlüsüyle takip eder. Bilgisayarınızın değişmesi ya da formatlanması muhtemelen bilgisayar adının da değişmesiyle sonuçlanacaktır ve bilgisayarın adı değiştiği zaman bütün dosya ve klasör eşlemelerini kaybettiniz demektir.
Bilgisayar değiştirirken tavsiye edilecek yöntem tüm "workspace" lerdeki dosyaları "Shelve"lere kaldırmaktır. Bu şekilde garantili bir şekilde yeni sisteme taşınabilirsiniz. Dosyalarınız sunucuda yedeklenmiş olur.

Fakat formatın ardından dosyalarınızın bulunduğu klasörlerin yolu değişmediyse ya da dosyalarınızı yeni bilgisayarınıza aynı dosya yolları ile aktardıysanız alternatif ve kolay bir yöntem daha var.

Şanslıyız ki TFS bilgisayar ve "workspace" isimlerini sadece metin olarak takip ediyor ve Team Explorer'i açtığınız zaman sizin kaynak kod kontrol sistemindeki tüm bilgilerinizi TFS sunucusundan indiriyor. Dosyalar sizin bilgisayarınızda olmasına rağmen bilgisayarda kaynak kod sisteminin eşlemeleri ile alakalı hiçbir bilgi tutulmuyor.

Yani, bilgisayarınızda kaç tane "workspace" var. Bunların içinde kaç tane klasör eşlenmiş durumda ve içlerinde hangi dosyalar sizin üzerinize "check-out" edilmiş durumda bilgisi tamamen sunucuda saklanıyor. Dolayısı ile yeni bilgisayara geçildiğinde bu bilgiler kaybedilmemiş oluyor. Sadece TFS'in hatırladığı bilgisayar ismini değiştirmek gerekiyor.

Bunun için kullanılabilecek ...

tf.exe /workspaces /updateComputerName:[eskiBilgisayarAdi] /collection:[TFSProjectCollection]


...şeklinde bir komut var. Bu komutu kullandığınızda size ait olan ve [eskiBilgisayarAdi] üzerinde kayıtlı olan tüm "workspace" ler yeni bilgisayara aktarılıyor. Yeni bilgisayar da o anda kullandığınız bilgisayar oluyor.

Bu komut sayesinde hiçbir detayla uğraşmadan tek bir komutla yeni sisteminize taşınabiliyorsunuz.

Benzer şekilde olur da kullanıcı adını değişirse ya da başka bir kullanıcının "workspace" lerini devralmak gerekirse diye de bir komut var:

tf.exe /workspaces /updateUserName:[eskiKullaniciAdi] /collection:[TFSProjectCollection]

Bu komutla da [eskiKullaniciAdi] adına kayıtlı tüm "workspace" leri yeni bir kullanıcıya aktarabiliyorsunuz, ki bu da komutu çalıştıran kullanıcı oluyor.

e-mre