Как синхронизировать SVN и Git. | Мелиша Траут | КодексX

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

  • Создание ветки синхронизации
  • Слияние изменений из SVN в Git
  • Необязательно: объедините изменения из Git в SVN (при необходимости).

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

Создать ветку синхронизации

Нам нужно будет создать новую ветку внутри git, которую мы назовем svn_sync. Это позволит нам получить любые изменения, сделанные из основной ветки после миграции. Также обратите внимание, что эта ветвь будет использоваться только для настройки подключения к SVN, она не будет использоваться для какой-либо разработки.

git branch --no-track svn_sync

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

git svn init -s 
git svn fetch --authors-file=../authors.txt

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

git config svn-remote.svn.authorsfile ~/authors.txt

Необязательно: если вы настроили git LFS во время миграции, вам нужно будет выполнить ту же настройку в новой ветке. Если вам нужно запомнить, как это делается, ознакомьтесь с разделом «Преобразование любых больших файлов в объекты LFS» в моем исходном посте:

Слияние изменений из SVN в Git

Проверьте ветку master, а затем объедините svn_sync с master:

git checkout master
git merge svn_sync

Как только все будет объединено и конфликтов не будет, вы можете отправить изменения слияния в удаленный репозиторий:

git push origin master

Необязательно: объедините изменения из Git в SVN (при необходимости).

Если вы столкнетесь с проблемой, из-за которой вам нужно будет объединить изменения из git обратно в SVN, то бойтесь! Это просто процесс, и я помогу вам пройти через него.
Сначала проверьте текущую ветку релиза или самую последнюю ветку в git (это может быть главная ветка) и внесите изменения:

git checkout master
git pull

Затем вам нужно будет проверить ветку svn_sync и получить последние изменения:

git checkout svn_sync
git svn fetch
git svn rebase

Теперь вам нужно будет объединить изменения из ветки релиза или master в ветку svn_sync:

git merge --no-ff master

Если есть какие-либо конфликты, вам нужно будет решить их на этом этапе. Как только они будут разрешены, вам нужно будет зафиксировать изменения локально, а затем зафиксировать изменения в SVN:

git commit -a
git svn commit

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *