Подготовка к миграции

Подготовка

Первый шаг перевода проекта от SVN к управлению на базе Git — подготовить локальную машину руководителя процесса перехода. На этом этапе вы загружаете удобный скрипт утилиты, устанавливаете чувствительную к регистру файловую систему (если необходимо) и преобразуете авторские данные из SVN в Git.

Все следующие шаги необходимо выполнять на локальной машине руководителя процесса перехода.

Загрузка скрипта перехода

В комплект поставки Git входит большинство инструментов, необходимых для импорта репозитория SVN, однако там не хватает нескольких функциональных элементов, которые команда Atlassian поместила в удобный JAR-файл. Файл svn-migration-scripts.jar обязателен для выполнения миграции, поэтому загрузите его из аккаунта Atlassian Bitbucket. В этом руководстве предполагается, что вы сохранили файл в домашнем каталоге. Обратите внимание, что для миграции из SVN нужна файловая система, чувствительная к регистру (NTFS не подойдет). Рекомендуется использовать машину с Linux.

После загрузки рекомендуется проверить скрипты, чтобы убедиться, что у вас установленыJava Runtime Environment ,Git ,Subversion и утилита git-svn. Откройте командную строку и запустите следующую команду:

java -jar ~/svn-migration-scripts.jar verify

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

Если вы получите предупреждение о том, что невозможно определить версию, выполните команду export LANG=C (*nix) или SET LANG=C (Windows) и повторите попытку.

Если вы осуществляете переход на компьютере с операционной системой OS X, вы также увидите следующее предупреждение:

You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.

Мы рассмотрим этот вопрос в следующем разделе.

Установка чувствительного к регистру образа диска

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

Если вы не используете OS X, вам просто нужно создать каталог на своей локальной машине под именем ~/GitMigration. Здесь будет выполняться преобразование. После чего можно перейти к следующему разделу.

Переход к Git: установка образа диска

Если вы используете операционную систему OS X, необходимо установить чувствительный к регистру образ диска со скриптом create-disk-image, включенным в файл svn-migration-scripts.jar. Следует выбрать два параметра:

  1. Размер создаваемого образа диска в гигабайтах. Можно использовать любой размер, превышающий размер репозитория SVN, перевод которого вы выполняете.
  2. Имя образа диска. В данном руководстве используется имя GitMigration.

Например, следующая команда создает образ диска размером 5 Гб под именем GitMigration:

java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration

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

Извлечение авторских данных

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

Переход к Git: преобразование имен пользователей SVN в имена пользователей Git

Запустите следующие команды, чтобы автоматически создать этот текстовый файл:

cd ~/GitMigration 
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txt

Обязательно замените на URI репозитория SVN, перевод которого вы выполняете. Например, если репозиторий находился на https://svn.example.com, необходимо запустить команду:

java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt

Будет создан текстовый файл authors.txt, который содержит имена пользователя всех авторов в репозитории SVN вместе с генерированным именем и адресом электронной почты. Он должен выглядеть примерно так:

j.doe = j.doe <j.doe@mycompany.com> 
m.smith = m.smith <m.smith@mycompany.com>

Замените значение справа от знака равенства на полное имя и адрес электронной почты соответствующего пользователя. Например, данные вышеуказанных авторов можно изменить на:

j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>

Резюме

Теперь у вас есть скрипты перехода, образ диска (только для OS X only) и авторские данные, и вы готовы к выполнению импорта истории SVN в новый репозиторий Git. На следующем этапе поясняется, как происходит преобразование.

Готовы изучить Git?

Ознакомьтесь с этим интерактивным обучающим руководством.

Начните прямо сейчас