Прочитать на английском

Поделиться через


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

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

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

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

Предпосылки

Категория Требования
доступ к проекту Член проекта .
Разрешения — Просмотр кода в частных проектах: по крайней мере базовый доступ.
— Клонирование или внесение вклада в код в частных проектах: Участник группы безопасности для участников или наличие соответствующих разрешений в проекте.
— Задайте разрешения ветви или репозитория: управление разрешениями для ветви или репозитория.
— Измените ветвь по умолчанию: . Измените политики и разрешения для репозитория.
— Импорт репозитория: член группы безопасности администраторов проекта или разрешение уровня проекта Git на создание репозитория установлено в «Разрешить» . Дополнительные сведения см. в разделе "Настройка разрешений репозитория Git".
услуги Repos включено.
Инструменты Необязательно. Используйте команды az repos: Azure DevOps CLI.

Примечание

В общедоступных проектах пользователи с доступом Stakeholder имеют полный доступ к Azure Repos, включая возможность просмотра, клонирования и участия в коде.

Категория Требования
доступ к проекту Член проекта .
Разрешения — Просмотр кода: доступ уровня Basic хотя бы .
— Клонирование или участие в коде: член группы безопасности участников или обладатель соответствующих разрешений в проекте.
услуги Repos включено.

Мы настоятельно рекомендуем прочитать централизованное управление версиями в 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 добавляется в сообщение фиксации первого набора изменений, перенесенного в Git, что упрощает поиск более старой истории при необходимости.

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

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

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

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

  1. Переносится только содержимое корня или ветвей. Например, если у вас есть проект TFVC в $/Fabrikam с одной ветвью и одной папкой под ним, путь к импорту $/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, вы можете перейти непосредственно к , чтобы зафиксировать изменения и выполнить миграцию на шаге.

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

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

После настройки сопоставлений загрузите папку на локальный компьютер.

tf get /version:T /recursive

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Важно!

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

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

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

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