Перейти к содержанию

Миграция с TFS

Версия TFS

Данный механизм миграции гарантировано работает с версией TFS 2012 года

Данный вид миграции осуществляется при помощи взаимодействия с GitFlic CLI, которая поставляется в одном архиве с GitFlic.

Предварительные условия

Перед осуществлением миграции необходимо убедиться в том что:

1. CLI запускается пользователем, который имеет права:

  • на чтение базы данных TFS
  • на запись статических директорий (/var/gitflic/) и базы данных GitFlic

2. Подготовлена пустая база данных для переноса данных из TFS. Миграция осуществляется только на чистую базу данных.

3. Установлена утилита git tfs.

4. Подготовлен файл содержащий преобразование tfs пользователей в git пользователей в следующем виде:

{tfsServerName}\{tfsUserName} = {gitUserName} <{gitUserEmail}}>
Пример содержания файла:
WIN-SERVER\admin = admin <admin@test.local>
WIN-SERVER\user = user <user@test.local>

5. Для корректного переноса ветки рекомендуется для папок, соответствующих веткам, открыть «Source Control Explorer», а затем выбрать «Branching and Merging» -> «Convert to Branch».

Запуск GitFlic CLI

1. Распакуйте архив с ПО GitFlic в любую удобную директорию

unzip gitflic_4.6.0_free_onpremise.zip

2. Перейдите в директорию CLI внутри распакованного архива

cd /path/to/archive/cli

3. Сделайте скрипт gitflic-cli.sh исполняемым

chmod +x ./gitflic-cli.sh

4. Для запуска GitFlic CLI воспользуйтесь следующей командой, добавив в качестве опции путь до конфигурационного файла вашего инстанса GitFlic:

./gitflic-cli.sh /путь/до/application.properties

Осуществление миграции

Процесс миграции происходит в два этапа - экспорт и импорт. Такой подход позволяет осуществить миграцию на другой хост, в том числе с другой операционной системой.

Экспорт данных из TFS

Для выполнения экспорта данных из TFS необходимо выполнить следующую команду:

export-tfs \
--sql-server <Название сервера SQL> \
--sql-database <Имя коллекции в БД> \
--sql-username <Имя пользователя SQL> \
--sql-password <Пароль пользователя SQL> \
--tfs-base-url <BaseURL TFS коллекции> \
--tfs-username <Имя пользователя TFS> \
--tfs-password <Пароль пользователя TFS> \
--project-name <Имя TFS проекта> \
--owner-email <Email владельца коллекции> \
--authors-filepath <Путь к файлу с tfs-git преобразованием пользователей> \
--branches <Стратегия переноса веток (auto/all/none)>  
Параметры Описание
sql-server Название SQL сервера с базой данных
sql-database Название базы данных, в которой лежит коллекция
sql-username Имя пользователя для подключение к базе данных (с доступом к данным)
sql-password Пароль пользователя для подключение к базе данных
tfs-base-url URL для доступа к tfs коллекции
tfs-username Имя пользователя для подключения к интерфейсу TFS (с правами на скачивание файлов)
tfs-password Пароль пользователя для подключения к интерфейсу TFS
project-name Название целевого проекта
owner-email Email пользователя GitFlic, которому будет принадлежать компания (созданная на основе коллекции). Пользователь с таким email должен либо существовать в GitFlic, либо быть в файле по пути из опции authors-filepath
authors-filepath Путь до файла с преобразованием tfs в git пользователей. К файлу должен быть доступ из папки, где запускается CLI.
branches Стратегия управления ветвями:
all (по умолчанию и рекомендовано для использования): управлять объединёнными наборами изменений и инициализировать все ветки во время клонирования.
none - игнорировать ветви и объединять наборы изменений, извлекая только путь клона TFS.
auto - управлять объединёнными наборами изменений и инициализировать объединённые ветки
Пример команды
export-tfs \
--sql-server tfs.example \
--sql-database Tfs-test-collection \
--sql-username testname \
--sql-password testpassword \
--tfs-base-url https://tfs.example:8080/tfs/test-collection \
--tfs-username test \
--tfs-password test \
--project-name test-project \
--owner-email test@test.ru \
--authors-filepath C:\\test\\test\\authors.txt
--branches all 

Результатом выполнения экспорта является архив gitflic-tfs-migration-{epoch-seconds}.zip, которая понадобится для дальнейшего импорта данных.

Импорт данных в GitFlic

Для выполнения импорта данных в GitFlic необходимо выполнить следующую команду:

tfs-import \
--archive-path <Путь к файлу с результатом экспорта> \
--owner-email <Email владельца коллекции>
Параметры Описание
archive-path Путь к архиву с данными экспорта из TFS
owner-email Email пользователя GitFlic, которому будет принадлежать компания (созданная на основе коллекции). Пользователь с таким email должен либо существовать в GitFlic, либо быть в файле по пути из опции authors-filepath
Пример команды
tfs-import \
--archive-path ./gitflic-tfs-migration-700000000.zip \
--owner-email test@test.ru

Результат миграции

После осуществления миграции в базе данных GitFlic будут созданы:

  • Пользователи, указанные в файле из опции authors-filepath. Всем пользователям, которые будут мигрированы в GitFlic, будет установлен временный пароль. В директории, в которой находится GitFlic CLI, будет создан файл generated-password.txt содержащий временные пароли. Сразу после авторизации по временному паролю, всем пользователем необходимо сменить пароль на постоянный.
  • Компания, соответствующая коллекции с владельцем, email которого указан в опции owner-email.
  • Проект в компании с git репозиторием и проблемами, соответствующими рабочим элементам (work items). Файлы из рабочих элементов прикрепляются к проблемам. В описание проблемы будет добавлена информация о названии области рабочего элемента (area) и список ссылок на связанные коммиты (change sets). Проблемы будут созданы в статусах, на основании статусов рабочих элементов.
Отношение статусов TFS и GitFlic
Статус в TFS Статус в GitFlic
New Новая
To Do Новая
Design Новая
In Progress В работе
Approved В работе
Committed В работе
Active В работе
Closed Отменена
Removed Отменена
Ready Завершена
Done Завершена

Возможные ошибки

  1. При возникновении ошибки, связанной с устаревшим TLS соединением необходимо в настройках java.security убрать заперт на использование TLSv1, TLSv1.1.