Сохранение истории копий 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, которые генерируют правила на основе обнаруженных путей.

Другие вопросы по тегам