Сохранение истории копий svn при конвертации в git с помощью инструмента kde svn2git - PullRequest
0 голосов
/ 10 декабря 2018

Мой вопрос очень похож на Сохранение истории копирования svn при конвертации в git , за исключением того, что я использую бесплатный инструмент kde svn2git

Подводя итог: я пытаюсь конвертировать одинSVN репо переходит в один репозиторий git.После переноса хранилища svn в git я заметил, что git, похоже, не выполняет операции копирования svn, поэтому итоговая история намного короче, чем я ожидал.Предположим, что мое репозиторий SVN выглядело так:

root

  • a
  • b
  • c
  • родительский проект

    • b

    • c

Проекты b и c были недавноскопировано в parent-proj как часть усилий по реструктуризации с целью в конечном итоге удалить их из их старых расположений под root.После миграции в полученном репозитории git отсутствует вся история, созданная в / b и / c до перемещения.

Я использую инструмент kde svn2git, который можно найти по адресу https://github.com/svn-all-fast-export/svn2git Я пыталсяпросмотреть примеры файлов правил и документацию для этого инструмента, но не смог найти никакой информации о том, как этого добиться с помощью этого инструмента.

1 Ответ

0 голосов
/ 16 апреля 2019

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

...