Импорт и перенос репозиториев из TFVC в Git

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

Вы можете перенести код из существующего репозитория TFVC в новый репозиторий Git в той же организации. Миграция на Git — это участвующий процесс для больших репозиториев TFVC и команд. Централизованные системы управления версиями, такие как TFVC, ведут себя по-разному от Git в основных направлениях. Переключение включает гораздо больше, чем обучение новых команд. Это разрушительные изменения, требующие тщательного планирования. Вам нужно подумать:

  • Изменение средств и процессов
  • Удаление двоичных файлов и исполняемых файлов
  • Обучение команды

Настоятельно рекомендуется читать централизованный элемент управления версиями в Git и следующий раздел "Миграция из TFVC в Git " перед началом миграции.

Интерфейс импорта отлично подходит для небольших простых репозиториев TFVC. Это также хорошо для репозиториев, которые уже были "удалены", как описано в централизованном элементе управления версиями в Git и следующем разделе "Миграция из TFVC в Git ". В этих разделах также рекомендуется использовать другие средства для более сложных конфигураций репозитория TFVC.

Внимание

Из-за различий в том, как журнал управления версиями TFVC и Git хранятся, рекомендуется не переносить журнал. Это тот подход, который корпорация Майкрософт предприняла при переносе Windows и других продуктов из системы централизованного управления версиями в Git.

Импорт репозитория

  1. Выберите Repos, Files.

    Просмотр ветвей

  2. В раскрывающемся списке репозитория выберите "Импорт репозитория".

    Параметр импорта репозитория

  3. Выберите TFVC в раскрывающемся списке "Исходный тип "

  4. Введите путь к репозиторию или ветвью или папке, которую необходимо импортировать в репозиторий Git. Например: $/Fabrikam/FabrikamWebsite

  5. Если вы хотите перенести журнал из репозитория TFVC, щелкните "Журнал миграции" и выберите количество дней. Журнал можно перенести до 180 дней, начиная с последнего набора изменений. Ссылка на репозиторий TFVC добавляется в сообщение фиксации 1-го набора изменений, перенесенного в Git. Это упрощает поиск более старой истории при необходимости.

  6. Присвойте имя новому репозиторию Git и нажмите кнопку "Импорт". В зависимости от размера импорта репозиторий Git будет готов через несколько минут.

    Диалоговое окно импорта репозитория

Устранение неполадок

Этот интерфейс оптимизирован для небольших, простых репозиториев TFVC или репозиториев, подготовленных для миграции. Это означает, что он имеет несколько ограничений.

  1. Она переносит только содержимое корневого или ветвь. Например, если у вас есть проект $/Fabrikam TFVC с 1 ветвью и 1 папкой под ним, путь к импорту $/Fabrikam импортирует папку, а $/Fabrikam/<branch> импортирует только ветвь.
  2. Импортированный репозиторий и связанный журнал (при импорте) не может превышать 1 ГБ.
  3. Вы можете импортировать до 180 дней журнала.

Если любой из приведенных выше элементов является блокировщиком для импорта, рекомендуем попробовать внешние инструменты, такие как Git-TFS, для импорта и чтения наших технический документ — централизованное управление версиями в Git и следующий раздел "Миграция из TFVC в Git".

Внимание

Использование внешних инструментов, таких как Git-TFS , с продуктами, службами или платформами Майкрософт, полностью отвечает за пользователя. Корпорация Майкрософт не поддерживает, поддерживает или гарантирует функциональность, надежность или безопасность таких сторонних расширений.

Переход с TFVC на Git

Перед миграцией исходного кода из централизованной системы управления версиями в Git уясните разницу между ними и подготовьтесь к миграции.

Требования

Чтобы упростить миграцию, перед импортом процедуры репозитория в предыдущем разделе этой статьи необходимо выполнить ряд требований.

  • Миграция только одной ветви. При планировании миграции выберите новую стратегию ветвления для Git. Миграция только основной ветви поддерживает рабочий процесс на основе разделов, например GitFlow или GitHub Flow.
  • Выполните миграцию чаевых, как и в, импортируйте только последнюю версию исходного кода. Если журнал TFVC прост, есть возможность перенести некоторые журналы до 180 дней, чтобы команда может работать только из Git. Дополнительные сведения см. в разделе "Планирование миграции в Git".
  • Исключите двоичные ресурсы, такие как изображения, научные наборы данных или игровые модели из репозитория. Эти ресурсы должны использовать расширение Git LFS (крупный файл служба хранилища), которое средство импорта не настраивает.
  • Сохраните импортированный репозиторий под размером 1 ГБ.

Если репозиторий не соответствует этим требованиям, используйте средство Git-TFS для миграции.

Внимание

Использование внешних инструментов, таких как Git-TFS , с продуктами, службами или платформами Майкрософт, полностью отвечает за пользователя. Корпорация Майкрософт не поддерживает, поддерживает или гарантирует функциональность, надежность или безопасность таких сторонних расширений.

Этапы миграции

Процесс миграции из TFVC обычно прост:

  1. Ознакомьтесь с последней версией ветви из TFVC на локальном диске.
  2. Удалите двоичные файлы и средства сборки из репозитория и настройте систему управления пакетами, например NuGet.
  3. Преобразуйте директивы конфигурации для конкретного элемента управления версиями. Например, преобразуйте .tfignore файлы .gitignoreв файлы и преобразуйте .tpattributes их в .gitattributes.
  4. Проверьте изменения и выполните миграцию в Git.

Шаги 1-3 являются необязательными. Если в репозитории нет двоичных файлов и нет необходимости настраивать или .gitignore а .gitattributes, можно перейти непосредственно к изменениям и выполнить шаг миграции .

Ознакомьтесь с последней версией

Создайте рабочую область TFS и сопоставийте рабочую папку для каталога сервера, перенесенного в Git. Для этого не требуется полное сопоставление рабочих папок. Из репозитория и папок, содержащих файлы конфигурации для системы управления версиями, удаляются только папки сопоставления, содержащие файлы .tfignoreконфигурации, относящиеся к системе управления версиями.

После настройки сопоставлений получите папку локально:

tf get /version:T /recursive

Удаление двоичных файлов и средств сборки

Благодаря тому, как Git сохраняет журнал измененных файлов, предоставляя копию каждого файла в журнале каждому разработчику, проверка в двоичных файлах непосредственно в репозитории приводит к быстрому росту репозитория и может вызвать проблемы с производительностью.

Для средств сборки и зависимостей, таких как библиотеки, внедряйте решение упаковки с поддержкой управления версиями, например NuGet. Многие средства и библиотеки открытый код уже доступны в коллекции NuGet, но для частных зависимостей создайте новые пакеты NuGet.

После перемещения зависимостей в NuGet убедитесь, что они не включены в репозиторий Git, добавив их в .gitignore.

Преобразование конфигурации элемента управления версиями

система управления версиями Team Foundation предоставляет .tfignore файл, который гарантирует, что некоторые файлы не добавляются в репозиторий TFVC. Файл можно использовать .tfignore для автоматически созданных файлов, таких как выходные данные сборки, чтобы они не случайно проверка.

Если проект зависит от этого поведения, преобразуйте .tfignore файл в .gitignore файл.

Кроссплатформенные клиенты TFVC также обеспечивают поддержку .tpattributes файла, который управляет размещением файлов на локальном диске или проверка в репозиторий. .tpattributes Если файл используется, преобразуйте его в .gitattributes файл.

Регистрация изменений и выполнение миграции

Проверьте все изменения, которые удаляют двоичные файлы, переносятся в управление пакетами или преобразуются в конфигурацию, относящуюся к управлению версиями. После внесения этого окончательного изменения в TFVC можно выполнить импорт.

Выполните процедуру импорта репозитория , чтобы выполнить импорт.

Расширенные миграции

Средство Git-TFS — это двусторонний мост между система управления версиями Team Foundation и Git, и его можно использовать для миграции. Git-TFS подходит для миграции с полным журналом, более 180 дней, поддерживаемых средством импорта. Кроме того, можно использовать Git-TFS для попытки миграции, которая включает несколько ветвей и связей слияния.

Прежде чем пытаться выполнить миграцию с помощью Git-TFS, обратите внимание, что существуют основные различия между способом TFVC и журналом хранилища Git:

  • Git сохраняет журнал в виде моментального снимка репозитория вовремя, а TFVC записывает дискретные операции, произошедшие в файле. Типы изменений в TFVC, такие как переименование, отмена и откат не могут быть выражены в Git. Вместо того, чтобы увидеть, что этот файл был переименован в файлB, он отслеживает только то, что A файл A был удален, и файл B был добавлен в ту же фиксацию.
  • Git не имеет прямого аналога метки TFVC. Метки могут содержать любое количество файлов в любой конкретной версии и могут отражать файлы в разных версиях. Хотя и концептуально аналогично, теги Git указывают на моментальный снимок всего репозитория в определенный момент времени. Если проект использует метки TFVC, чтобы узнать, что было доставлено, теги Git могут не предоставлять эти сведения.
  • Слияние в TFVC происходит на уровне файла, а не во всем репозитории. С одной ветвью можно объединить только подмножество измененных файлов. Остальные измененные файлы могут быть объединены в последующий набор изменений. В Git слияние влияет на весь репозиторий, и оба набора отдельных изменений не могут рассматриваться как слияние.

Из-за этих различий рекомендуется выполнить миграцию чаевых и сохранить репозиторий TFVC в сети, но только для чтения, чтобы просмотреть журнал.

Чтобы выполнить расширенную миграцию с помощью Git-TFS, ознакомьтесь с клонированием одной ветви с журналом иликлонированием всех ветвей с журналом слиянием.

Внимание

Использование внешних инструментов, таких как Git-TFS , с продуктами, службами или платформами Майкрософт, полностью отвечает за пользователя. Корпорация Майкрософт не поддерживает, поддерживает или гарантирует функциональность, надежность или безопасность таких сторонних расширений.

Обновление рабочего процесса

Переход от централизованной системы управления версиями к Git больше, чем просто перенос кода. Команда нуждается в обучении, чтобы понять, как Git отличается от существующей системы управления версиями и как эти различия влияют на повседневную работу.

Узнайте больше о том, как перейти с централизованного управления версиями в Git.