12 Mart 2015 Perşembe

Team Foundation Server ile Proje Oluşturma

     Merhaba arkadaşlar,
     Bu yazımda sizlere önce Team Foundation Server (TFS)'nin kaynak kod kontrol özelliğinden biraz bahsedeceğim. TFS'nin muhtemelen kullanılmaya başlayan ilk bileşeni kaynak kod kontrol sistemidir. Sağladığı özellikleri listelemek gerekirse:
  • TFS kaynak kod kontrol sistemi dosyaları 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. 

  • 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ın almasıyla Team Explorer Everywhere adını alan eklenti sayesinde Eclipse ortamı üzerinde Java dünyasına da girer, Java kodlarını da 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 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 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.[1]
       Şimdi gelelim Team Foundation Server ile proje oluşturmaya. İlk olarak TFS'ye nasıl bağlanacağınızı adım adım göstereceğim. Bunun için web access yada Visual Studio kullanabilirsiniz. Fakat bazı developmentlar için Visual Studio gerekli olduğu için ilk olarak Visual Studio 2013 ile TFS'ye nasıl bağlanacağınızdan bahsedeceğim.

     1. Visual Studio Kullanarak Team Foundation Server'a Bağlanma
      Visual Studio ile bağlanmak için bir kaç yol var, en kolayından başlarsak önceden var olan bir Collection'a bağlanalım.
      Visual Studio 2013'ü açtığımızda şekil 1'de gösterildiği gibi Team menüsünden Connect to Team Foundation Server ile ilerliyoruz.

Şekil 1: Team Foundation Server'a Bağlanma
     Daha sonra, sağda çıkan menüden Select Team Project diyerek şekil 2'de adım adım gösterdiğim şekilde ilerliyoruz. Çıkan pencereden kurulum sırasında oluşturduğunuz server adını girerek işlemleri tamamlıyoruz.

Şekil 2: Team Foundation Server Ekleme
     Server ekleme işlemini tamamladıktan sonra şekil 3'te gösterildiği gibi server seçtiğimizde bir önceki yazımda kurulum sırasında oluşturduğum Team Project Collection olan DefaultCollection otomatik olarak gelmiş oldu. Connect diyerek var olan bir Collection'a bağlanma işlemini tamamlamış olduk.

Şekil 3: Team Foundation Server'a Bağlanma

     2. Visual Studio ile Team Project Oluşturma
     Yukarıda servera bağlandık ama hali hazırda kullanabileceğimiz bir team project'imiz bulunmamaktadır. Bunun için adım adım proje oluşturmaktan bahsedeceğim.
     Proje oluşturmak için bir kaç seçeneğiniz var ama en kullanışlısından başlamak gerekirse ilk olarak şekil 4'te görüldüğü gibi Team Explorer menüsünden Create Team Project diyerek açılan pencerede oluşturmak istediğimiz projenin adını ve istersek açıklamasını girerek ilerliyoruz.

Şekil 4: Team Project Oluşturma
      Daha sonra şekil 5'te görüldüğü gibi bir process template seçmemiz gerekiyor. Projemizin yapısına uygun olanı seçip ilerliyoruz. Process template ler hakkında ayrıntılı bilgiyi aşağıdaki bağlantıdan bulabilirsiniz. Ben CMMI seçerek ilerliyorum.
      https://msdn.microsoft.com/en-us/library/ms400752.aspx

Şekil 5: Process Template Seçimi
     Process template seçildikten sonra versiyon kontrol sistemini seçmeye geliyoruz. Team Foundation Version Control ve Git seçeneklerimiz mevcut. İkisi arasındaki farkı açıklamak gerekirse:

     Team Foundation Version Control (TFVC ), merkezi sürüm kontrol sistemidir. Tipik olarak, ekip üyelerinin development makinelerinde her dosyanın sadece bir sürümü var. Tarihsel veriler yalnızca sunucu üzerinde tutulur. Branchlar yol tabanlıdır ve sunucu üzerinde oluşturulur.

     TFVC değişiklikler yapmak için ekibinize iki model sağlar:
     Server Workspaces: Ekip üyeleri, değişiklik yapmadan önce dosyaları herkesin bileceği şekilde kullanıma alır. Çoğu işlem developerların sunucuya bağlı olmasını gerektirir. Bu sistem iş akışlarını kilitlemenizi kolaylaştırır.
   Local Workspaces: Her ekip üyesi, kod tabanının en son sürümünün bir kopyasını yanına alır ve gerektiğinde çevrimdışı olarak çalışır. Developerlar değişikliklerini check in eder ve conflictleri gerektiği şekilde giderir.

     Git , dağıtılmış sürüm denetim sistemi şeklindedir. Her developerın development makinesinde kaynak deposunun tamamının bir kopyası vardır. Developerlar her değişiklik kümesini development makinelerinden commit edebilir ve geçmiş ve karşılaştırma gibi sürüm denetim işlemlerini bir ağ bağlantısı olmadan yapabilir. Branchlar hafif nesnelerdir. Kod tabanınızın farklı çeşitleri arasında pivot olması için bir branchtan diğerine hızla geçebilirsiniz. Daha sonra, branchı merge, publish ya da dispose edebilirsiniz. [2]
     Gelelim bizim seçeceğimiz sisteme. Ben şekil 6'da görüldüğü gibi TFVC seçerek bitiriyorum.
Şekil 6: Source Control Ayarlarını Belirleme
     Artık projemiz work items, build ve source control için hazır hale gelmiştir. Şekil 7'de örnek projemiz görülmektedir.

Şekil 7: Source Control Explorer
     3. Ekip Üyelerinin Projeye Eklenmesi
     İlk adımımızı atarak kendimize bir hesap oluşturduk ve bu hesabı kullanarak ilk projemizi oluşturduk. Ama asıl önemli olan nokta projemize diğer ekip üyelerinin de katılmasını sağlamak. Bunun için ilk olarak şekil 7'de görüldüğü üzere Team Explorer menüsünden Task Board'u açıyoruz.
Daha sonra proje ekranı karşımıza çıkmaktadır.

Şekil 8: Ekip Projesi Ekranı
     Şekil 8'de görüldüğü üzere  ekip projesi ekranının sağ tarafındaki sütunda, Etkinlikler ile Yönetim arasında bulunan Üyeler bölümü sayesinde kolaylıkla  projemize yeni ekip üyeleri ekleyebiliriz. Bir proje oluşturduğumuzda varsayılan olarak projenin bir üyesi olacağımız için bu bölümde ilk kendi adımızı görüyoruz. Yeni ekip üyelerini de projeye dahil etmek için bu bölümde yer alan "Takım üyelerini yönet…" linkini kullanıyoruz. Bu link projemiz için takım üyelerini yönetme penceresini açmaktadır. Buradan hızlıca ekip üyeleri/gruplar ekleyebilir ya da mevcut ekip üyelerinden/gruplardan istediklerimizi çıkartabiliriz. Pencerenin sol üst köşesinden bulunan Ekle menüsü altıda yer alan "Windows kullanıcısı veya grubu ekleyin" ve "TFS grubu ekle" seçenekleri bize kullanıcı ve/veya grup ekleme olanağı sunmaktadır.

Şekil 9: Yeni Kullanıcı Kimliği
     Şekil 9'da görüldüğü üzere, ekip projemize yeni bir kullanıcı eklemek için kullanıcının desteklenen bir kimlik sağlayıcı ve geçerli bir kullanıcı olması gerekmektedir. Bundan emin olmak için Ad Denetle linki ile geçerli olup olmadığını kontrol edebiliriz yada Gözat linki ile tanımlı kullanıcılardan bir ya da bir kaçını seçebiliriz. Kimlik kısmından emin olduktan sonra değişiklikleri kaydet diyerek kullanıcı eklemeyi tamamlayabiliriz.



    Haftaya örnek projemiz üzerinden folder ve branch oluşturmayı anlatacağım. Bir sonraki yazımda buluşmak üzere, okuduğunuz için teşekkürler.





Referanslar:
[1]TFS Bileşenleri-Kaynak kod kontrolü, http://emretoptanci.blogspot.com.tr/2010/09/tfs-bilesenleri-15-kaynak-kod-kontrolu.html, 12.03.2015
[2]Version Control, https://msdn.microsoft.com/tr-tr/library/ms181368.aspx, 12.03.2015





4 yorum:

  1. Güzel bir yazı olmuş, eline sağlık.

    Oluşturduğun bu projeye ikinci bir developer katılmak istese ne yapması gerekiyor? Ondan da bahsedebilir misin?

    Selamlar,
    Muzaffer.

    YanıtlaSil
    Yanıtlar
    1. Tabi ki, yönetici tarafından projeye nasıl yeni bir kullanıcı ekleyeceğimizden bahsedip güncelledim.

      Teşekkür ederim.

      Sil
    2. Öncelikle paylaşımlarınızın benim için çok değerli olduğunu vurgulayarak size teşekkür etmek isterim. Aklıma takılan bir soru vardı. Bu konuda yardımcı olabilirseniz sevinirim. Yanlış anlamadıysam oluşturduğumuz projeye ekleyeceğimiz kullanıcıları, daha önceden windows kullanıcısı olarak eklememiz gerekiyor. Bunun server'a erişime olanak sağlayacağını düşündüğüm için daha güvenli bir yolu olup olmadığını öğrenmek istiyorum. İyi geceler.

      Sil
  2. Öncelikle paylaşımlar için teşekkürler. Makaleleri baz alarak kurulumu tamamladım fakat kullanıcı ekleme konusunda sorum olacak. Anlattığınız şekilde kullanıcı eklersem sadece kendi bilgisayarımdan farklı bir kullanıcı hesabını ekleyebiliyorum. Farklı bir bilgisayar kullanan arkadaşı projeye dahil etmek için nasıl bi yol izlemeliyiz ?

    YanıtlaSil