TFS to Git (TFS’deki projelerinizi Git’e çevirme)

Faruk Aydemir
Devops Türkiye☁️ 🐧 🐳 ☸️
3 min readJul 16, 2019

Uzun bir aradan sonra tekrardan merhabalar.

Aslında Azure DevOps ve Azure ile ilgili bir yazı serisi oluşturuyorum bu yazı sadece karşılaştığım ve herkese faydası olabileceği bir sorunu çözmek üzere kısa bir yazı olacak.

Ozaman başlayalım …

Bilindiği gibi TFS (Team Foundation Server) Microsoft’un Azure DevOps’a geçmeden önce kullandığı VSTS içerisindeki versiyon kontrol sistemiydi.

Microsoftun Github’ı satıl alması ile AzureDevOps sistemine geçti ve burası içerisinde aktif olarak artık Git Repolarını kullanmaya başladı hatta doğrudan Azure Repos diye bir mantık oluşturdu ve arka tarafta Git yapısı ile çalışır hale getirdi.

Tabi eski projeleri TFS’te olan firmalarda Git’in daha kullanışlı olan yapısına geçmeye başladı.

İşte bugün bu geçiş için neler yapmamız gerekiyor ona bakacağız.

Başlamadan önce indirilmesi ve yapılması gerekenler gerekenler;

1- https://chocolatey.org/ buradan chocolateyi PowerShell üzerinden indiriyoruz.

2- Aşağıdaki gibi bir AzureDevOps tarafından bir Alternate Credentials

1- DevOps ekranında sağ üst taraftaki kullanıcı işlemleri kısmına tıklıyoruz.

2- Security kısmına tıklıyoruz.

4- Açılan ekrandan soldaki gibi Alternate Credentials kısmını seçiyoruz.

5-Bu ekrandan Username ve Password oluşturarak bu bilgileri bir yere kaydediyoruz.

3- PowerShell tarafında Chocolatey kurulduktan sonra tekrar Powershell’i kapatıp tekrardan yönetici olarak başlatarak aşağıdaki komutu çalıştırıyoruz.

cinst git-tf

Kurulum tamamlandıktan sonra başlamak için herşey hazır.

git-tf’i yükledikten sonra yapmamız gereken aşağıdaki komutla beraber TFS’te bulunan projeyi bir git reposu gibi bilgisayarımıza çekmek. git-tf burada devreye girip tfs projenizin checkin historysini git commitlerine çevirerek lokalimize bir git reposu gibi indirilmesini sağlıyo.

Aşağıdaki komut satırını PowerShell üzerinde çalıştırıyoruz.

git-tf clone https://hesapadi.visualstudio.com/DefaultCollection $/ProjeAdi/BranchAdi --deep

Branch kullanmıyorsanız BranchAdı yazmanıza gerek yok.

Bu komut satırını çalıştırdıktan sonra sizden oluşturduğunuz credential bilgilerini soracak. Kaydettiğiniz Username ve Password’ü girerek işlemi başlatıyoruz.

İşlem biraz uzun sürüyor belitmekte fayda var.

Projeyi indirdikten sonra TFS ile ilgili bilgileri içerisinden silmek gerek. Proje içerisinde vspscc uzantılı herşeyi siliyoruz.

.sln uzantılı Solution dosyasını text editörde açarak içerisindeki GlobalSection(TeamFoundationVersionControl) ile başlayan sectionu siliyoruz.

ardından bir adet .gitignore dosyası ekleyerek süreci tamamlayıp repomuzu istediğimiz yere pushluyoruz.

AzureDevOps tarafında yeni bir Repo oluşturarak veya GitHup reposuna pushlayabiliriz. Aşağıdaki komut satırına yolu ekleyerek

git commit -m "dosyalar tfsten gite taşındı." 
git remote add origin https://github.com/xxx/repo.git git push origin master

Evet hepsi bu kadar.

Aslında Azure DevOps içerisinde doğrudan import ile çevirebileceğiniz farklı bir yolu daha var bu kadar uğraşmadan ama bu yöntem proje boyutu 50 MB altında olan repoları destekliyor.

Bu yöntemide aşağıya gif şeklinde ekliyorum bunu da deneyebilirsiniz.

Umarım işinize yarar.

Keyifli Kodlamalar.

Kaynaklar;

1- https://docs.microsoft.com/en-us/azure/devops/repos/git/import-from-tfvc?view=azure-devops

2- https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

3- http://www.ilkayilknur.com/vsonline-projelerini-history-kaybetmeden-gite-tasima

--

--