20 Haziran 2017 Salı

TFS to Git Migration

Merhaba,


Git'in en büyük avantajlarından biri, iş bazında branch oluşturulurken, TFVC'de olduğu gibi ekstra kaynak harcamamaktadır. Branch'ler snapshot mantığında hızlıca oluşturulmaktadır. Oluşturulan branchler arasında geçiş çok hızlıdır. 

TFVC Merkezi sürüm kontrol sistemine sahipken, Git ise dağıtık sürüm kontrol sistemine sahiptir.

Git ile ilgili tüm bilgilere aşağıdaki linkten ulaşabilirsiniz.

https://git-scm.com/book/en/v2

TFS to Git Migration işlemi için aşağıdaki adımları takip ederek history kaybetmeden hızlıca geçiş yapabilirsiniz. Büyük projelerde history almak isterseniz, kodu indrme işlemi zaman alacaktır. --deep komutunu kaldırırsanız history almadan kısa sürede (max: 5 - 10 dk) kodu indirebilirsiniz.

Öncelikle Git-tf uygulamasını aşağıdaki linkten indiriniz. 

http://git-tfs.com

Ardından sırasıyla aşağıdaki adımları takip ediniz


1.  Klasörü oluştur
mkdir C:\git-tf\TfsSolutaion
2.      Oluşturulan klasöre git
cd C:\git-tf\TfsSolutaion
3.       Kodunu klon oluşturarak indir
Git-tf clone http://TFS_URL:8080/tfs/ProjectCollection/  $/TfsProject/Project-Main --deep
4.      Klasör içerisindeki *.vssscc uzantılı dosyaları sil Ardından .sln dosyasındaki TFS bağlantısını kaldır
GlobalSection(TeamFoundationVersionControl) .. EndGlobalSection
5.      https://www.gitignore.io/ sitesinden visual studio için dosyanı oluştur ve proje klasörüne VisualStudio.gitignore kaydet

6.      Klasörü indirdiğin path'e "C:\git-tf\TfsSolutaion\TfsProject-Main>" git ve aşağıdaki komutu çalıştır.
git add .
7.      Ardından aşağıdaki komutu çalıştır.

git commit -a -m "initial commit after conversion"

        8.      Web Access üzerinde yeni bir repository oluştur.  Süreç aşağıdaki resimlerde gösterildiği gibi tamamlanır.




7 Kasım 2015 Cumartesi

TFS Code Branching & Merge 2


TFS Code Branching & Merge 2


3. Geliştirmesi tamamlanan bir uygulamanın başka bir uygulamaya merge edilme işlemi aşağıdaki şekilde gerçekleştirilir. Biz burada CodeBranchDev uygulamamızda yapılan değişikliklerin CodeBranchTest ve CodeBranchRelease ortamlarına aktarılma işlemerini gerçekleştireceğiz.

             a. Aktarılmak istenen uygulama üzerinde sağ tıklanır ve View History seçeneği seçilir ve aşağıdaki gibi history (changeset) bilgileri gelmektedir.




Changeset üzerine sağ tıklandığında changeset için yaplabilecek özellikler açılmaktadır. Bunlar sırasıyla
                                                    i.   View : Branch’ten ulaşılan history bilgisinde bu seçenek aktif değildir. Bu seçenek aktif olduğu durumlarda o changeset ile check-In yapılan kod bilgisini gösterir.
                                                   ii.   Changeset Details : Bu seçenek seçildiğinde team explorer penceresinde değişiklik yapılan dosyalar listelenir.
                                                 iii.    Compare : İki branch arasındaki farklılıkları kontrol eder. Farklılık gördüğü dosyaları belirtir (Different “Yes”).

                                                 

                               iv.  Request Review : Branch yapılacak kodun, branch öncesinde kod kontrolüne gönderilmesi için kullanılır. Kod review konusu ayrı bir başlık altında detaylı olarak anlatılacaktır.



                                                    v.     Get This Version : Bu seçenek ile seçili olan changesete ait versiyon alınır.

                                                   vi.     Rollback Entire Changeset : Bu seçenek ile seçili olan changeset verisyonu solution’a geri yüklenir. Eğer ilgili sayfalarda değişiklik var ise hangi değişikliğin dikkate alınacağına dair aşağıdaki çatışmaları çözme ekran (Resolve Conflicts) çıkar. Bu ekrana Track Changeset menüsünü anlatırken detaylı olarak değinilecektir.


                                                            
                               vii.     Copy : Seçili olan satır bilgilerini kopyalar.
                                                    viii.    Track Changeset : Bu ekranda Merge yapılacak olan branch uygulamaları sol taraftan seçildiğinde sağda ilgili branchlerin ilişkisi görünmektedir. Sağdaki ekrandan branch listesini görüntülenme şekli ağaç ya da düz, tümünü genişlet tümünü genişlet, tümünü seç tümünü kaldır, ve dahil olan ve olmayan branchleri göster seçenekleri bulunaktadır. 


İlgili branchler seçildikten sonra görselleştir (visualize) butonuna  tıklayarak aşağıdaki Tracking
Changeset ekranına ulaşılır.

a.      Bu ekrandaki üst menülerle sırasıya:














 ix.  Kaydet butonuna tıklayarak görseli kaydedebili
  x.  Kopyala butonuna tıklayarak görseli kopyalayabili
 xi.  Rerun butonuna tıklayarak Select Branches ekranına dönebili
xii.  Hiyerarşi butonuna tıklayarak branch hiyerarşi yapısına gidebilir.

Seçili branchin sağ alt köşesinde çıkan artıya (+) tıklanarak bu branche bağlı alt branchler görüntülenir. Sağ üst köşedeki çarpı (x) işaretine tıklanarak ilgili branch görsel listeden gizlenir. Aşağıda ekran görüntüleri sırasıyla gösterilmiştir.








                                         
















Devamı Gelecek.


13 Eylül 2015 Pazar

TFS Code Branching & Merge

TFS Code Branching & Merge 

Code Branching & Merge Nedir:  Türkçesi dallanma olan bu fonksiyonun amacı kod değişikliklerinin birden fazla dalda paralel olarak gerçekleşmesidir. Böylece bir ortamda yapılan değişikliklerin başka bir ortamı kısmen ya da tamamen aktarılmasını sağlamak mümkün olacaktır. Branch kullanılmayan sistemlerde developer bir class’ta veya metod’da geliştirme yaptığında  bu geliştirmenin tümünü Check-In etmek istemediğinde ya kodunu rafa kaldıracak, ya başka bir dosyaya kopyalacak ya da benzeri yöntemleri uygulamak zorundaydı. Tabi burada tek bir değişiklikten bahsettiğimizde bu işlem çok zor değil fakat 8 –10 sayfadan bahseder,  onlarca satır kod olduğunu varsayarsak bu yöntem hem zaman olarak hem işlem olarak oldukça zahmetli olacaktır. İşte tam da bu aşamada Braching devreye girmektedir.

Örnek vermek gerekirse;

Source control’deki uygulamamızın sırasıyla CodeBranchingDev, CodeBranchingTest ve CodeBranchingRelease olmak üzere üç kopyası olduğunu düşünelim. CodeBranchingDev uygulamasında geliştirilen kod (bu bir class olabilir veya class içinde bir kod satırı olabilir) developer tarafından CodeBranchingTest ortamına aktarılır. Aktarılan geliştirmeye ilişkin testler yapılır. Fakat buradaki testin normalden uzun süreceğini düşünelim ve birden fazla developerın etkileşimli olarak kod yazdığı bir modülde kodunu Check-In etmesi gerektiğini düşünürsek kodunun test ortamına gitmesi kaçınılmaz olacaktır ve bu durumda da uygulama kullanımında hatalarla karşılaşmak kaçınılmaz olacaktır. Fakat branching yöntemi kullanıldığında developer Check-In yaptığı kodu CodeBranchingTest ortamına birleştirme (merge) yapmadığı sürece test ekibinin çalışmasını etkilemeyeceği gibi Check-In yapmamakla bir başka developerın çalışmasınada engel olmayacaktır.

Branching Nasıl Oluşturulur

Bir uygulamayı branching’e dönüştürmek için iki yöntem vardır.

1. Source Controldeki proje içerisinde bulunan uygulama üzerine sağ tıklanır ve  Branchig & Merging menüsünde Branch seçeneği seçilir (Resim1). Eğer branch işlemi Resim1’deki gibi klasör üzerine sağ tıklayarak oluşturuluyor ise aşağıdaki (Resim2) ekran çıkar. Bu ekranda oluşturulacak olan Branc versiyon bilgisi seçilir. Otomatik olarak son versiyon seçeneği gelmektedir.


Resim1
Resim2

Branch ekranındaki seçenekler:
Soruce  : Kaynak uygulama. Otomatik olarak seçilen uygulama gelir ve değiştirilemez.
Target : Branc oluşturulacak projedeki branc ismi. Otomatik dolu gelir ve değiştirilebilir.
Branch from version : Bu panelde yer alan seçenekler ise aşağıda açıklamalarıyla birlikte belirtilmiştir.
a.      Changeset : Mevcut bir değişikilk seti seçilerek ilgili değişikliğe ait kod ile
b.      Date : Herhangi bir tarihe ait set ile
c.      Label : Etiket ile. Bu build setide olabilir. Bir uygulamanızın son aşamasına geldiğinizi, bu uygulama test edilmiş ve çalışan bir uygulama olduğunu varsayalım. Bu versiyona bir etiket ismi vererek ilerleyen aşamalarda bu versiyonu bir başka branch’e ya da ortama aktarmanız ve ulaşmanız daha kolay olacaktır. Etiketleme işlemi için aşağıdaki resimde gösterilen adımlar


  • İlgili uygulama üzerinde sağ tıklanır. Advanced menüsünde Apply Label seçeneğine tıklanır.

  • Apply Label... seçeneğine tınlandıktan sonra aşağıdaki ekrana ulaşılır.

ü  Version: Etiket atayacağınız uygulama için bu listede bulunan seçeneklerde birini seçebilirsiniz. Listede bulunan seçeneklerin açıklamalaarı yukarıda ve aşağıda anlatılmıştır.
Bir uygulamadaki etiketlere aşağıdaki resimlerdeki işlem adımlarını takip edilerek ulaşabilir, düzenleyebilir ve silebilirsiniz.



d.      Latest Version : Sunucudaki son versiyon ile
e.      Workspace Version : Çalışma alanındaki kod ile

2. Eğer branch işlemi aşağıdaki gibi ilk önce branch’e convert edilip sonradan sonradan branch oluşturulacak ise işlem aşamaları sırasıyla aşağıdaki resimlerde gösterildiği gibi yapılır.





Tüm klasörlerde bu dönüşümü uygulamak için (Recursively perform this conversion on all folders previously branched from this folder) seçeneği seçilir ve Convert butonuna tıklanır.





Devamı için tıklayınız...