LINUX.ORG.RU

Перенос подпроекта из отдельного SVN в общий Git

 ,


0

1

Столкнулись со следующей проблемой: есть отдельный SVN репозиторий с подпроектом (C++ и примерно 5-6 разных продуктов сборки) с немалой историей. Хочется перенести это в Git, но в Git репозиторий должен стать лишь подпапкой в более крупном проекте. Одновременно хочется сохранить историю.

История изменений и работоспособный git blame важны, так как весь код legacy, имеет кучу ad-hoc решений (т.е. костылей) и его надо сопровождать.

Насколько я знаю, есть средства переноса из svn в git, в которых можно настраивать отображение авторов коммитов и тому подобные настройки. Можно попробовать импортировать отдельный svn в отдельный git, а затем использовать git subtree или другую технику включения вложенного git-репозитория в более крупный git-репозиторий.

Есть что посоветовать на эту тему? Сохранится ли после такого (или иного) переноса история изменений и работоспособный git blame?

Хочется перенести это в Git, но в Git репозиторий должен стать лишь подпапкой в более крупном проекте.

При желании можно импортировать svn в отдельную ветку, потом в ветке поменять корневой путь на поддиректорию (git filter-branch --tree-filter ...) и после примержить её в мастер. Можно использовать git subtree с похожим результатом. Если svn сдохнет совсем после переезда. то мб достаточно будет простого переноса.

mashina ★★★★★ ()
Ответ на: комментарий от mashina

В общем после изучения вопроса остановился на трёхшаговом переносе

  • в новую папку git svn с опцией --authors-file и опцией --stdlayout, URL — корень репозитория svn
  • в новом репозитории git filter-branch --tree-filter с Python скриптом (дело было на оффтопе...) для вырезания ненужных директорий. Этот шаг был нужен, чтобы объёмный мусор (80% размера на диске) не попал в основной репозиторий.
  • в основном репозитории git subtree --prefix=... source master, где source — добавленный мной remote-репозиторий с локального диска
quiet_readonly ★★★★ ()
Последнее исправление: quiet_readonly (всего исправлений: 1)

Всё сохраняется, именно так и нужно делать.

slapin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.