Подготовка
Первый шаг перевода проекта от 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
. Здесь будет выполняться преобразование. После чего можно перейти к следующему разделу.
Если вы используете операционную систему OS X, необходимо установить чувствительный к регистру образ диска со скриптом
create-disk-image, включенным в файл svn-migration-scripts.jar
. Следует выбрать два параметра:
- Размер создаваемого образа диска в гигабайтах. Можно использовать любой размер, превышающий размер репозитория SVN, перевод которого вы выполняете.
- Имя образа диска. В данном руководстве используется
имя
GitMigration.
Например, следующая команда создает образ диска размером 5 Гб под именем GitMigration
:
java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration
Образ диска устанавливается в корневой каталог, и теперь вы можете видеть каталог с именем ~/GitMigration
на своей локальной машине. Он служит виртуальной, чувствительной к регистру файловой системой, и сюда сохраняется преобразованный репозиторий Git.
Извлечение авторских данных
SVN записывает только имя пользователя автора каждой версии. 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. На следующем этапе поясняется, как происходит преобразование.