Подготовка
Первый шаг перевода проекта от 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
Если у вас отсутствуют необходимые программы для выполнения перехода, на консоли отобразится сообщение об ошибке. Прежде чем продолжать, установите отсутствующее программное обеспечение.
Связанные материалы
Перемещение полного репозитория Git
СМ. РЕШЕНИЕ
Изучите Git с помощью Bitbucket Cloud
Если вы получите предупреждение о том, что невозможно определить версию, выполните команду 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
. Следует выбрать два параметра:
1. Размер создаваемого образа диска в гигабайтах. Можно использовать любой размер, превышающий размер репозитория SVN, перевод которого вы выполняете.
2. The name of the disk image. This guide uses GitMigration
for this value.
Например, следующая команда создает образ диска размером 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
Обязательно замените <svn_repo_uri>
на 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. На следующем этапе поясняется, как происходит преобразование.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.