Importowanie i migrowanie repozytoriów z serwera TFVC do usługi Git

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Kod można migrować z istniejącego repozytorium TFVC do nowego repozytorium Git w tej samej organizacji. Migracja do usługi Git to proces związany z dużymi repozytoriami i zespołami TFVC. Scentralizowane systemy kontroli wersji, takie jak TFVC, zachowują się inaczej niż git w podstawowy sposób. Przełącznik obejmuje o wiele więcej niż uczenie się nowych poleceń. Jest to przełomowa zmiana, która wymaga starannego planowania. Musisz zastanowić się nad:

  • Przegląd narzędzi i procesów
  • Usuwanie plików binarnych i plików wykonywalnych
  • Szkolenie zespołu

Zdecydowanie zalecamy zapoznanie się ze scentralizowaną kontrolą wersji w usłudze Git i poniższą sekcją Migrate from TFVC to Git (Migracja z serwera TFVC do usługi Git ) przed rozpoczęciem migracji.

Środowisko importowania jest doskonałe w przypadku małych prostych repozytoriów TFVC. Dobrym rozwiązaniem jest również repozytoria, które zostały już "wyczyszczone", zgodnie z opisem w sekcji Scentralizowana kontrola wersji w usłudze Git i poniższa sekcja Migrowanie z serwera TFVC do usługi Git . W tych sekcjach zaleca się również inne narzędzia do bardziej zaawansowanych konfiguracji repozytorium TFVC.

Ważne

Ze względu na różnice w sposobie przechowywania historii kontroli wersji serwera TFVC i usługi Git zalecamy, aby nie migrować historii. Takie samo podejście zastosowała firma Microsoft podczas migracji systemu Windows i innych produktów z rozwiązania do scentralizowanej kontroli wersji do usługi Git.

Importowanie repozytorium

  1. Wybierz pozycję Repozytoria, Pliki.

    Wyświetlanie gałęzi

  2. Z listy rozwijanej repozytorium wybierz pozycję Importuj repozytorium.

    Opcja importu repozytorium

  3. Wybierz pozycję TFVC z listy rozwijanej Typ źródła

  4. Wpisz ścieżkę do repozytorium / gałęzi / folderu, który chcesz zaimportować do repozytorium Git. Na przykład $/Fabrikam/FabrikamWebsite

  5. Jeśli chcesz przeprowadzić migrację historii z repozytorium TFVC, kliknij pozycję Historia migracji i wybierz liczbę dni. Możesz przeprowadzić migrację do 180 dni historii, począwszy od najnowszego zestawu zmian. Link do repozytorium TFVC jest dodawany w komunikacie zatwierdzenia 1 zestawu zmian migrowanego do usługi Git. Ułatwia to znalezienie starszej historii w razie potrzeby.

  6. Nadaj nazwę nowemu repozytorium Git i kliknij przycisk Importuj. W zależności od rozmiaru importu repozytorium Git będzie gotowe w ciągu kilku minut.

    Okno dialogowe Importowanie repozytorium

Rozwiązywanie problemów

To środowisko jest zoptymalizowane pod kątem małych, prostych repozytoriów TFVC lub repozytoriów, które zostały przygotowane do migracji. Oznacza to, że ma kilka ograniczeń.

  1. Migruje tylko zawartość katalogu głównego lub gałęzi. Jeśli na przykład masz projekt TFVC, w $/Fabrikam którym jest pod nim 1 gałąź i 1 folder, ścieżka do importowania spowoduje zaimportowanie $/Fabrikam folderu, podczas gdy $/Fabrikam/<branch> będzie importować tylko gałąź.
  2. Zaimportowane repozytorium i skojarzona historia (jeśli zaimportowano) nie mogą przekraczać 1 GB rozmiaru.
  3. Możesz zaimportować do 180 dni historii.

Jeśli którykolwiek z powyższych elementów jest blokowaniem importu, zalecamy wypróbowanie narzędzi zewnętrznych, takich jak Git-TFS, w celu importowania i odczytywania naszych oficjalny dokument — scentralizowana kontrola wersji w usłudze Git oraz poniższa sekcja Migracja z serwera TFVC do usługi Git.

Ważne

Użycie narzędzi zewnętrznych, takich jak Git-TFS z produktami, usługami lub platformami firmy Microsoft, jest całkowicie odpowiedzialne za użytkownika. Firma Microsoft nie popiera, nie obsługuje ani nie gwarantuje funkcjonalności, niezawodności ani zabezpieczeń takich rozszerzeń innych firm.

Migrowanie z serwera TFVC do usługi Git

Przed migracją kodu źródłowego ze scentralizowanego systemu kontroli wersji do usługi Git należy zrozumieć różnice między nimi i przygotować się do migracji.

Wymagania

Aby ułatwić migrację, przed wykonaniem procedury importowania repozytorium w poprzedniej sekcji tego artykułu istnieje kilka wymagań.

  • Migrowanie tylko jednej gałęzi. Podczas planowania migracji wybierz nową strategię rozgałęziania dla usługi Git. Migrowanie tylko gałęzi głównej obsługuje przepływ pracy oparty na gałęzi tematu, taki jak GitFlow lub GitHub Flow.
  • Wykonaj migrację porad, tak jak w temacie, zaimportuj tylko najnowszą wersję kodu źródłowego. Jeśli historia kontroli wersji serwera Team Foundation jest prosta, istnieje możliwość migrowania historii do 180 dni, aby zespół mógł pracować tylko z usługi Git. Aby uzyskać więcej informacji, zobacz Planowanie migracji do usługi Git.
  • Wyklucz zasoby binarne, takie jak obrazy, zestawy danych naukowych lub modele gier z repozytorium. Te zasoby powinny używać rozszerzenia Git LFS (duży magazyn plików), którego narzędzie importu nie konfiguruje.
  • Zachowaj zaimportowane repozytorium poniżej 1 GB rozmiaru.

Jeśli repozytorium nie spełnia tych wymagań, użyj narzędzia Git-TFS, aby przeprowadzić migrację.

Ważne

Użycie narzędzi zewnętrznych, takich jak Git-TFS z produktami, usługami lub platformami firmy Microsoft, jest całkowicie odpowiedzialne za użytkownika. Firma Microsoft nie popiera, nie obsługuje ani nie gwarantuje funkcjonalności, niezawodności ani zabezpieczeń takich rozszerzeń innych firm.

Kroki migracji

Proces migracji z serwera TFVC jest zwykle prosty:

  1. Zapoznaj się z najnowszą wersją gałęzi z serwera TFVC na dysku lokalnym.
  2. Usuń pliki binarne i narzędzia kompilacji z repozytorium i skonfiguruj system zarządzania pakietami, taki jak NuGet.
  3. Konwertowanie dyrektyw konfiguracji specyficznych dla kontroli wersji. Na przykład przekonwertuj .tfignore pliki na .gitignore, i przekonwertuj .tpattributes pliki na .gitattributes.
  4. Zaewidencjonuj zmiany i przeprowadź migrację do usługi Git.

Kroki 1–3 są opcjonalne. Jeśli w repozytorium nie ma plików binarnych i nie ma potrzeby konfigurowania .gitignore elementu lub .gitattributes, możesz przejść bezpośrednio do kroku Zaewidencjonuj zmiany i wykonaj krok migracji .

Zapoznaj się z najnowszą wersją

Utwórz nowy obszar roboczy TFS i zamapuj folder roboczy dla katalogu serwera migrowanego do usługi Git. Nie wymaga to pełnego mapowania folderów roboczych. Tylko foldery mapy zawierające pliki binarne, które mają zostać usunięte z repozytorium i folderów zawierających pliki konfiguracji specyficzne dla systemu kontroli wersji, takie jak .tfignore.

Po skonfigurowaniu mapowań pobierz folder lokalnie:

tf get /version:T /recursive

Usuwanie plików binarnych i narzędzi kompilacji

Ze względu na sposób, w jaki usługa Git przechowuje historię zmienionych plików, udostępniając kopię każdego pliku w historii każdemu deweloperowi, zaewidencjonowanie plików binarnych bezpośrednio w repozytorium powoduje, że repozytorium szybko rośnie i może powodować problemy z wydajnością.

W przypadku narzędzi i zależności kompilacji, takich jak biblioteki, należy wdrożyć rozwiązanie do tworzenia pakietów z obsługą obsługi wersji, na przykład NuGet. Wiele narzędzi i bibliotek typu open source jest już dostępnych w galerii NuGet, ale w przypadku zastrzeżonych zależności utwórz nowe pakiety NuGet.

Po przeniesieniu zależności do narzędzia NuGet upewnij się, że nie są one uwzględnione w repozytorium Git, dodając je do usługi .gitignore.

Konwertowanie konfiguracji specyficznej dla kontroli wersji

Kontrola wersji serwera Team Foundation udostępnia .tfignore plik, który gwarantuje, że niektóre pliki nie są dodawane do repozytorium kontroli wersji serwera Team Foundation. Możesz użyć .tfignore pliku do automatycznego generowania plików, takich jak dane wyjściowe kompilacji, aby nie były przypadkowo zaewidencjonowane.

Jeśli projekt opiera się na tym zachowaniu, przekonwertuj .tfignore.gitignore plik na plik.

Klienci tfVC międzyplatformowych zapewniają również obsługę .tpattributes pliku, który kontroluje sposób umieszczania plików na dysku lokalnym lub zaewidencjonowany w repozytorium. .tpattributes Jeśli plik jest używany, przekonwertuj .gitattributes go na plik.

Zaewidencjonuj zmiany i przeprowadź migrację

Zaewidencjonuj wszelkie zmiany, które usuwają pliki binarne, przeprowadzają migrację do zarządzania pakietami lub konwertują konfigurację specyficzną dla kontroli wersji. Po wprowadzeniu tej ostatecznej zmiany w kontroli wersji serwera TEAMVC można wykonać importowanie.

Postępuj zgodnie z procedurą Importowanie repozytorium , aby wykonać importowanie.

Migracje zaawansowane

Narzędzie Git-TFS to dwukierunkowy most między Kontrola wersji serwera Team Foundation a usługą Git i można go użyć do przeprowadzenia migracji. Usługa Git-TFS jest odpowiednia do migracji z pełną historią, ponad 180 dni, które obsługuje narzędzie importu. Możesz też użyć narzędzia Git-TFS do podjęcia próby migracji obejmującej wiele gałęzi i scalanie relacji.

Przed podjęciem próby migracji za pomocą serwera Git-TFS należy pamiętać, że istnieją podstawowe różnice między sposobem przechowywania serwera TFVC i historii magazynu Git:

  • Usługa Git przechowuje historię jako migawkę repozytorium w czasie, podczas gdy funkcja TFVC rejestruje dyskretne operacje, które wystąpiły w pliku. Nie można wyrazić zmian typów na serwerze TFVC, takich jak zmiana nazwy, cofanie i wycofywanie w usłudze Git. Zamiast widzieć, że nazwa pliku została zmieniona na plik AB, śledzi tylko ten plik A został usunięty i plik B został dodany w tym samym zatwierdzeniu.
  • Usługa Git nie ma bezpośredniego odpowiednika etykiety TFVC. Etykiety mogą zawierać dowolną liczbę plików w dowolnej określonej wersji i mogą odzwierciedlać pliki w różnych wersjach. Chociaż koncepcyjnie podobne, tagi usługi Git wskazują migawkę całego repozytorium w danym momencie. Jeśli projekt opiera się na etykietach tfVC, aby dowiedzieć się, co zostało dostarczone, tagi git mogą nie podawać tych informacji.
  • Scalania w programie TFVC występują na poziomie pliku, a nie na całym repozytorium. Tylko podzbiór zmienionych plików można scalić z jednej gałęzi do innej. Pozostałe zmienione pliki można następnie scalić w kolejnym zestawie zmian. W usłudze Git scalanie wpływa na całe repozytorium, a oba zestawy poszczególnych zmian nie mogą być postrzegane jako scalanie.

Ze względu na te różnice zaleca się przeprowadzenie migracji porad i przechowywanie repozytorium TFVC w trybie online, ale tylko do odczytu, aby wyświetlić historię.

Aby spróbować przeprowadzić zaawansowaną migrację za pomocą serwera Git-TFS, zobacz klonowanie pojedynczej gałęzi z historią lub klonowanie wszystkich gałęzi z historią scalania.

Ważne

Użycie narzędzi zewnętrznych, takich jak Git-TFS z produktami, usługami lub platformami firmy Microsoft, jest całkowicie odpowiedzialne za użytkownika. Firma Microsoft nie popiera, nie obsługuje ani nie gwarantuje funkcjonalności, niezawodności ani zabezpieczeń takich rozszerzeń innych firm.

Aktualizowanie przepływu pracy

Przejście ze scentralizowanego systemu kontroli wersji do usługi Git to nie tylko migracja kodu. Zespół musi trenować, aby zrozumieć, jak usługa Git różni się od istniejącego systemu kontroli wersji i jak te różnice wpływają na codzienną pracę.

Dowiedz się więcej na temat migrowania ze scentralizowanej kontroli wersji do usługi Git.