У нас есть нестандартный репозиторий Subversion, который мы хотели бы преобразовать в Git . Проблема в том, что я действительно не знаю, с чего начать, чтобы убедиться, что мы сохраняем полную историю, но не закончим с полным беспорядком.
Наш репозиторий насчитывает последние 6 лет истории продуктового пакета наших компаний и претерпел несколько реструктуризаций. Во всех случаях у нас есть база кода базовой платформы, а затем несколько проектов / плагинов, которые по-разному сочетаются поверх базовой платформы.
Первые несколько лет были структурированы следующим образом:
-- plugin1
- trunk
- branches
- tags
-- pluginX
- trunk
- branches
- tags
-- trunk (core platform)
- <various sub dirs)
-- branches (various feature branches of the entire repository)
- refactoring1
- refactoringX
-- tags (various tags of customer releases of full respository)
- customerX_1.x
-- vendor (vendor drops and tracking of 3rd party source deps)
- 3rd_party_code_A
- 3rd_party_code_X
Со временем мы добавили еще пару каталогов, в том числе корень:
-- releases (replaced tags; branches for released stable versions of repos)
-- sandbox (area for misc projects of interest; should have been new repo)
Затем мы очистили это и в итоге получили:
-- trunk
- platform
- plugin1
- pluginX
-- stable (stable release branches of trunk)
- 1.1
- 1.2
-- tags (release points; marks a point on a stable branch)
- 1.1.1
- 1.1.2
-- vendor
-- sandbox
-- releases (copies of old releases of interest)
Итак, это наша история. Мы надеемся, что в итоге получится намного чище. Прямо сейчас мы думаем о том, чтобы база репозитория git выглядела так (по сути, это копия предыдущего каталога 'trunk').
- platform
- plugin1
- pluginX
Branches:
- stable/1.1
- stable/1.2
Tags:
- rel/1.1.1
- rel/1.1.2
Мы хотели бы поместить песочницу и поставщика в их собственные репозитории. (не знаю, как это сделать, но, возможно, есть способ импортировать только подмножество репозитория svn)
Что касается веток и тегов, мы бы хотели, чтобы код из «стабильного» заканчивался как ветки, код из тегов, чтобы в конечном итоге они превратились в теги в стабильной версии.
Для более старой истории из исходной структуры мы хотели бы сохранить как можно больше истории, но не хотим загрязнять новый репозиторий. Например, если бы мы могли оглянуться назад и увидеть изменения, которые произошли в ветвях рефакторинга, это было бы здорово, но не обязательно.
В настоящее время мы обсуждаем, как действовать и как все реструктурировать и импортировать в чистом виде. Меньшее, что нам нужно, - это способ иметь полную историю кода платформы и плагина в обеих предыдущих реструктуризациях репозитория.Если возможно, мы также хотели бы получить стабильную информацию и информацию о тегах из самой последней структуры репозитория.
Есть ли у кого-нибудь рекомендации по выполнению этого импорта?
Например: