Close

Synchronize Git repositories

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

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

Переход к Git: рекомендуется односторонняя синхронизация от SVN к Git.

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


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


Файл authors.txt, который использовался для преобразования имен пользователей SVN в полные имена и адреса электронной почты, важен для процесса синхронизации. Если он был перемещен из ~/GitMigration/authors.txt, которое мы использовали ранее, вам необходимо обновить его расположение с помощью:

git config svn.authorsfile 

Если новые разработчики вносили изменения в репозиторий SVN после прошлой синхронизации (или первоначального клонирования), необходимо обновить файл авторских данных. Это можно сделать вручную, добавляя новых пользователей в authors.txt,или же можно использовать опцию --authors-prog, как описано в предыдущем разделе.

Для разовой синхронизации зачастую проще непосредственно отредактировать авторский файл, а опцию--authors-prog рекомендуется использовать при выполнении неконтролируемых синхронизаций (запланированные задачи).

базы данных
Связанные материалы

Перемещение полного репозитория Git

Логотип Bitbucket
СМ. РЕШЕНИЕ

Изучите Git с помощью Bitbucket Cloud

Автоматическое генерирование авторов Git


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

Команда git svn включает опцию --authors-prog,указывающую на скрипт, который автоматически преобразовывает имена пользователя SVN в авторов Git. Необходимо настроить этот скрипт, чтобы он принимал имя пользователя SVN как единственный аргумент и возвращал его в одной строке в форме Имя (так же, как в правой части существующего файла авторских данных). Эта опция очень полезна, если вы периодически добавляете в проект новых разработчиков.

Если желаете использовать опцию --authors-prog, создайте файл с именем authors.sh в ~/GitMigration. Добавьте следующую строку в authors.sh, чтобы вернуть фиктивное имя Git и адрес электронной почты авторам, которые отсутствуют в файле authors.txt:

echo "$1 <$1@example.com>"

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

Извлечение новых поступлений SVN


В отличие от SVN, в Git имеется различие между загрузкой предыдущих поступлений и интеграцией их в проект. Первое называется «извлечением», а второе может быть выполнено посредством слияния или перебазированием. В каталоге ~/GitMigration выполните следующую команду, чтобы извлечь все новые поступления из оригинального репозитория SVN.

git svn fetch

Она похожа на команду git svn clone из предыдущего этапа в том, что она обновляет только удаленные ветви репозитория Git — локальные ветви при этом не будут отражать обновлений. С другой стороны, удаленные ветви должны точно соответствовать истории репозитория SVN.

Если вы используете опцию --authors-prog необходимо включить ее в вышеуказанную команду:

git svn fetch --authors-prog=authors.sh

Синхронизация с извлеченными поступлениями

Для применения загруженных поступлений к репозиторию, запустите следующую команду:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase

Эта команда переместит извлеченные поступления на ваши локальные ветви, чтобы они соответствовали своим удаленным аналогам. Теперь вы должны видеть новые поступления в результатах git log .

Очистка репозитория Git (повторная)

Рекомендуется снова запустить скрипт git-clean, чтобы удалить устаревшие тэги или ветви, которые были удалены из первоначального репозитория SVN с момента прошлой синхронизации:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

Теперь ваш локальный репозиторий Git должен быть синхронизирован с репозиторием SVN.

Резюме


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


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Люди сотрудничают друг с другом, используя стену со множеством инструментов

Блог Bitbucket

Рисунок: DevOps

Образовательные программы DevOps

Демонстрация функций в демо-зале с участием экспертов Atlassian

Как инструмент Bitbucket Cloud работает с Atlassian Open DevOps

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up