Udostępnij przez


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

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Kod można migrować z istniejącego repozytorium Kontroli wersji programu Team Foundation (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 destrukcyjna 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

Wymagania wstępne

Kategoria Requirements
Dostęp do projektu Członek projektu.
Uprawnienia — Wyświetlanie kodu w projektach prywatnych: co najmniej dostęp podstawowy .
— Klonowanie lub współtworzenie kodu w projektach prywatnych: członek grupy zabezpieczeń Współautorzy lub odpowiednie uprawnienia w projekcie.
— Ustaw uprawnienia gałęzi lub repozytorium: Zarządzaj uprawnieniami dla gałęzi lub repozytorium.
- Zmień gałąź domyślną: Edytuj uprawnienia zasad dla repozytorium.
— Zaimportuj repozytorium: członek grupy zabezpieczeń Administratorzy projektu lub Uprawnienia do tworzenia repozytorium git na wartość Zezwalaj. Aby uzyskać więcej informacji, zobacz Ustawianie uprawnień repozytorium Git.
Services Włączone repozytoria.
Narzędzia Opcjonalny. Użyj poleceń az repos : interfejs wiersza polecenia usługi Azure DevOps.

Uwaga / Notatka

W projektach publicznych użytkownicy z dostępem uczestników projektu mają pełny dostęp do usługi Azure Repos, w tym do wyświetlania, klonowania i współtworzenia kodu.

Kategoria Requirements
Dostęp do projektu Członek projektu.
Uprawnienia - Wyświetl kod: co najmniej dostęp podstawowy .
— Klonowanie lub współtworzenie kodu: członek grupy zabezpieczeń Współautorzy lub odpowiednie uprawnienia w projekcie.
Services Włączone repozytoria.

Przed rozpoczęciem migracji zdecydowanie zalecamy przeczytanie sekcji Scentralizowana kontrola wersji w usłudze Git i migracja z wersji serwera TFVC do usługi Git .

Środowisko importowania jest idealne dla małych, prostych repozytoriów TFVC. Jest ona również odpowiednia dla repozytoriów, które są już czyste, zgodnie z opisem w sekcji Scentralizowana kontrola wersji w usłudze Git i Migracja 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 nie zalecamy migrowania historii, co jest podejściem, które firma Microsoft podjęła podczas migracji systemu Windows i innych produktów ze 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, wybierz 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 pierwszego zestawu zmian migrowanego do usługi Git, co ułatwia znajdowanie starszej historii w razie potrzeby.

  6. Nadaj nazwę nowemu repozytorium Git i wybierz pozycję 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 przygotowanych 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 istnieje jedna gałąź i jeden folder pod nim, ścieżka do zaimportowania spowoduje zaimportowanie $/Fabrikam folderu, podczas gdy $/Fabrikam/<branch> tylko zaimportuje gałąź.
  2. Zaimportowane repozytorium i skojarzona historia (jeśli zaimportowane) nie mogą przekraczać 1 GB rozmiaru.
  3. Możesz zaimportować do 180 dni historii.

Jeśli którakolwiek z wymienionych wcześniej informacji jest blokowaniem importu, zalecamy wypróbowanie narzędzi zewnętrznych, takich jak Git-TFS w celu importowania i odczytywania naszych oficjalnych dokumentów — 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 niż Microsoft.

Migrowanie z serwera TFVC do usługi Git

Przed przeprowadzeniem migracji 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.

Requirements

Aby ułatwić migrację, przed zaimportowaniem procedury repozytorium w poprzedniej sekcji tego artykułu istnieje wiele 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 tfVC jest prosta, możesz zdecydować się na migrację 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ędziaGit-TFS do przeprowadzenia migracji.

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 niż Microsoft.

Migrate

Proces migracji z serwera TFVC jest 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 i zamapuj folder roboczy dla katalogu serwera migrowanego do usługi Git. Ta akcja nie wymaga 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

Ponieważ 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 może spowodować, że repozytorium szybko wzrośnie i doprowadzi do problemów 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 elementu .gitignore.

Konwertowanie konfiguracji specyficznej dla kontroli wersji

Kontrola wersji programu Team Foundation udostępnia .tfignore plik, który gwarantuje, że niektóre pliki nie są dodawane do repozytorium kontroli wersji serwera TEAMVC. 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.

Migracje zaawansowane

NarzędzieGit-TFS to dwukierunkowy most między serwerem TFVS i usługą Git i można go użyć do przeprowadzenia migracji. Git-TFS jest odpowiednia dla migracji z pełną historią, ponad 180 dni, które obsługuje narzędzie Import. Możesz też użyć Git-TFS do podjęcia próby migracji obejmującej wiele gałęzi i relacji scalania.

Przed podjęciem próby migracji z usługą Git-TFS należy pamiętać o następujących podstawowych różnicach 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 zalecamy 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 niż Microsoft.

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.