Сохранение истории копий svn при конвертации в git с помощью инструмента kde svn2git
Мой вопрос очень похож на Сохранение истории копий svn при конвертации в git, за исключением того, что я использую бесплатный инструмент kde svn2git
Подводя итог: я пытаюсь преобразовать один репозиторий SVN в один репозиторий git. После переноса хранилища svn в git я заметил, что git, похоже, не выполняет операции копирования svn, поэтому итоговая история намного короче, чем я ожидал. Предположим, что мой репозиторий SVN выглядел так:
корень
- б
- с
родительский проект
б
с
Проекты b и c были недавно скопированы в рамках parent-proj как часть усилий по реструктуризации с целью в конечном итоге удалить их из их старых расположений под root. После перенастройки в результирующем git-репо отсутствует вся история, которая возникла из /b и /c до переезда.
Я использую инструмент kde svn2git, который можно найти по адресу https://github.com/svn-all-fast-export/svn2git Я попытался просмотреть примеры файлов правил и документацию для этого инструмента, но не смог найти какую-либо информацию о Как добиться этого с помощью этого инструмента.
0 ответов
По моему опыту, ситуация, которую вы описываете, является частым явлением в SVN. Люди создают "произвольный ствол".
В идеале проекты должны следовать соглашениям Subversion. Это означает, что каждый проект будет иметь подпапку с названием "ствол, ветви, теги". Затем при миграции с помощью svn2git все, что вам нужно, это правило для этих трех папок:
create repository fw
end repository
match /Project/trunk/
repository fw
branch master
end match
match /Project/branches/([^/]+)/
repository fw
branch \1
end match
match /Project/tags/([^/]+)/
repository fw
branch refs/tags/\1
end match
К сожалению, если вы переносите репозиторий, который не строго следует соглашению, у вас могут быть произвольные стволы, что означает совершенно отдельную историю. Поэтому вам нужно отдельное правило, например, у вас может быть такое правило:
match /Project/trunk/subdir1/subdir2/myproj/trunk
repository fw
branch master
end match
Вам может понадобиться написать скрипт для проверки путей SVN, которые генерируют правила на основе обнаруженных путей.