Переход от мерзавца к мерзавцу - PullRequest
0 голосов
/ 06 марта 2019

Мы храним основной репозиторий нашего проекта в SVN.Затем, чтобы упростить работу, каждый из нас сделал git svn clone транк SVN для мастера git, и мы работаем с использованием потока git.Когда наша работа завершена в ветви функций, мы объединяем ее с master и делаем git svn dcommit, чтобы отправить изменения в репозиторий SVN.

Но теперь нам нужно отказаться от репозитория SVN и полностью переключиться на git.Как мы можем добиться этого, если хотим сохранить историю и ветви, которые еще не слились в master?

Я так и думал: мы делаем чистую копию текущего репозитория SVN с помощью git svn clone и помещаем еена нашем сервере - это будет наш «центральный» репозиторий.Теперь мы добавим этот репозиторий как удаленный в наши существующие репозитории.Но как я могу это сделать?Могу ли я сменить старого мастера на нового?Могу ли я затем объединить старые, еще не слитые ветви функций с новым мастером без ненужных конфликтов?

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Давайте начнем с самого начала: вы должны настроить «чистый» svn-клон на git без какой-либо частной работы, которую делали отдельные разработчики. Это сделано для того, чтобы вы могли использовать одни и те же ревизии, иначе у людей будут разные истории, которые не смогут собраться вместе ... или, что еще хуже, несколько ревизий в git, которые фактически соответствуют одной ревизии svn.

Затем каждый из разработчиков может использовать этот репозиторий в качестве официального «пульта», который они могут добавить в свои текущие настройки. Как только они получат это, они могут по своему усмотрению перебазировать свои частные ветки, чтобы никто не потерял ни одной из своих предыдущих работ ( Я не говорю, что это тривиальная вещь ... у каждой ветви будет своя отправная точка, так что если вы хотите выполнить работу правильно , каждая ветвь должна обрабатываться отдельно .... может даже подумать об использовании скрипта, который мог бы позаботиться о анализе поиска совпадений между старой ревизией SVN и новой ревизии из нового общего svn clone ), и тогда вы (каждый разработчик) можете избавиться от исходного (svn) удаленного репо, которое они использовали вначале, так что теперь вы можете начать взаимодействовать с чистыми рабочими процессами git и забыть о SVN взаимодействия.

0 голосов
/ 07 марта 2019

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

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

...