2009-12-31 11 views
15

Chciałbym zobaczyć, jak TFS zadziała dla mojego polecenia. Chciałbym przenieść nasze obecne repozytorium GIT do bazy danych TFS. Użyliśmy GIT do przejęcia obsługi rozgałęziającej, więc chciałbym użyć TFS 2010 do rozwiązania tego problemu.Git do TFS Source Control Migration

Teraz pytanie. Jak eksportować nasze repozytorium GIT do TFS. Oczywiście to jakiś skrypt. Czy ktoś to zrobił? Jakieś sugestie?

Dziękuję.

+17

Dlaczego, do diabła, ktoś miałby przejść z git na tfs? – hasen

+14

Dwa słowa: lepsze oprzyrządowanie. Wiem, że git ma dużo szumu. A sam pan Torwalds napisał o tym całą partię, ale wchodząc w interakcję z tą rzeczą SUKCES. Używam tego od 19 miesięcy, przedstawiłem go zespołowi i nie myślę o nim jak o srebrnej kuli. Wszystkie narzędzia interfejsu użytkownika są lame. Interfejs wiersza poleceń jest szczegółowy. Mam zestaw skryptów do obsługi mojego przepływu pracy, ale nie jest to rozwiązanie, z którego jestem dumny. Plus TFS to więcej niż kontrola źródła. Jest to kompleksowe rozwiązanie: śledzenie błędów, system kompilacji, integracja VS, witryna SP dla deweloperów, którzy nie oglądają procesu i nie zgłaszają błędów, itp. –

+0

Rozszerzenia Git https://code.google.com/p/gitextensions/ szybko się rozwijają Komentarz Artema jest przestarzały. O wiele ładniejszy interfejs użytkownika niż dołączone interfejsy. –

Odpowiedz

9

Microsoft już teraz wydali swój własny GIT < -> rozszerzenie TFS dla GIT: GIT-TF

Pozwala to ciągnięcie nowego repozytorium GIT z TFS lub konfiguracji aby umożliwić GIT popycha do TFS, czyli to, co chcesz zrobić :

(z dokumentacją)

dla zespołu roboczego z istniejącym Git repo, deweloper dzielenie zmiany do TFS za pomocą git-TF byłoby użyć następującego pracy.

# Configure the existing repo's relationship with TFS 
git tf configure http://myserver:8080/tfs $/TeamProjectA/Main 

# Fetch the latest changes from TFS and merge those 
# changes with the local changes. 
# Note, merging is important when working in a team configuration. 
# See "Rebase vs. Merge" below. 
git tf pull 

git commit -a -m "merge commit" 

# Check in the merge commit as a single TFS changeset 
git tf checkin 

# Push the merge commit to the origin 
git push 

Ponadto istniejące wcześniej open-source GIT-TFS rozwiązanie może być wykorzystane (z Windows tylko rozwiązanie Microsoftu wykorzystuje Java i jest cross-platform), opisane w odpowiedzi na Git to TFS 2008 one way migration (with history)

+0

To rozwiązanie działa tylko bez oddziałów. Jeśli masz oddziały, lepszym rozwiązaniem będzie użycie TFS2013 (Git). – Philippe

0

Możesz być w stanie wyeksportować git do svn i użyć CS Converter, aby przejść z svn do TFVS. Uwaga: Konwerter CS został przerwany, ale wygląda na to, że nadal można go pobrać.

2

Skonfiguruj SVNBridge na TFS, a następnie użyj klonu git-svn.

+2

To aktualizacja git svn, ale masz rację. Zrobiłem dokładnie to. –

+0

Nie widzę już polecenia 'git svn update' w [Dokumentach Git] (http://git-scm.com/docs/git-svn), chociaż znalazłem' git svn dcommit', który " Zatwierdź wszystkie różnice z bieżącej gałęzi bezpośrednio do repozytorium SVN, a następnie zmień bazę [s] lub zresetuj [s] (w zależności od tego, czy istnieje różnica między SVN i głowicą), co spowoduje utworzenie rewizji w SVN dla każdego zatwierdzenia w git. " Więc jeśli to ma być to samo? –

5

stworzyłem krótki plik wsadowy, ale trzeba mieć Narzędzia Power Team Foundation (tfpt.exe) na swojej drodze i Na (polecenie pętli linii poleceń)

wizualna Studio linia poleceń do żądanego folderu git i uruchom następujące.

git log --pretty="'%%H',%%ci - %%s" --reverse > commits 

tf workspace temp /new /s:http://{TfsInstance} /i 
tf workfold /map %2 . /workspace:temp 

FOR /F "tokens=1* delims=','" %%a IN (commits) DO git checkout %%a && tfpt online /recursive /exclude:.git*,commits,*.obj,*.exe,_ReSharper*,obj,debug,*.user,*.suo,Bin /adds /deletes /i && tf checkin /author:"{AuthorName}" /comment:"%%b" /i 

tf workspace temp /delete /i 
  1. Najpierw tworzy plik, popełnia wszelkich informacji popełnienia w odwrotnej kolejności (najwcześniej na początku).
  2. Następnie tworzy przestrzeń roboczą Team Foundation ... (należy koniecznie wymienić {TtsInstance} z TFS URI.
  3. Następnie tworzy tymczasowy folder w obszarze roboczym.
  4. Wtedy pętle przez każdego wiersza w pliku zmian są , robi kasę z git, używa TFPT do sprawdzania bieżących plików (ponownie pamiętaj, aby zastąpić {AuthorName} swoim nazwiskiem autora) komentarz będzie zawierał znacznik czasu z git (niestety nie możesz zmienić czasu checkin bez zmiany czasu serwera TFS i odradzam tego) i nazwisko autora oryginalnego:

T jego działało w porządku, ale gałęzie nie zostaną splądrowane. Nie poświęciłem czasu na rozgałęzienie, ponieważ nie było to wystarczająco duże obciążenie dla pracy w tym czasie.

Mam nadzieję, że to może trochę zaoszczędzić!

+0

Dodałem 'Thumbs.db' do listy ** tfpt ** exclude. Usunąłem go z historii git, ponieważ został on przypadkowo dodany przed dodaniem pliku _.gitignore_, a podczas uruchamiania pliku '.bat' pojawiały się błędy. –

-1

To jest stare pytanie i być może nikt już tego nie szuka, ale teraz jest o wiele łatwiej.

  1. Tworzenie projektu zespół w TFS z Git jako kontroli kodu źródłowego

  2. Grab url Git projektu. Będzie wyglądać jak ... https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

  3. Upuść do polecenia jak i wykonaj.

    git remote add pochodzenie https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

    git push -u pochodzenie --all

powinno być wszystko, czego potrzebujesz.

+0

Niezbyt pomocne, ponieważ w przypadku używania GIT z hostem TFS, nie masz pełnego zestawu elementów sterujących, które miałbyś do swojej dyspozycji, tak jak w przypadku pełny projekt zarządzany przez TFS. –