Свн -> миграция git с несколькими транками /ветками /тегами

У меня есть один репозиторий SVN со следующей структурой текущей :

  • project1
    • ветви литий>
    • багажник
    • теги
  • project2
    • ветви литий>
    • багажник
    • теги

который изначально имел такую ​​структуру:

  • Проект
    • ветви литий>
    • Ствол
      • proj1
      • proj2
    • теги

То есть, проект был разделен на две отдельные "суб-репозитории" (или как вы хотите это называть)

Есть ли способ перенести это в git без потери истории ? Будет ли svn2git лучше, чем git-svn для этого сценария? Есть ли другой инструмент миграции?

РЕДАКТИРОВАТЬ : я попробовал git svn clone, как и предлагалось, но, как я думал, он не следовал переходу от старой структуры к новой. Он только импортировал ревизии из новой структуры.

4 голоса | спросил Mauricio Scheffer 9 +04002009-10-09T01:07:20+04:00312009bEurope/MoscowFri, 09 Oct 2009 01:07:20 +0400 2009, 01:07:20

5 ответов


0

Сначала я преобразовал основной ствол в git:

git svn clone url-to-project -s

Затем я преобразовал каждый проект:

git svn clone url-to-project1 -s
git svn clone url-to-project2 -s
...

Затем для каждого проекта я прикреплял предыдущую историю из основного ствола, используя трансплантаты и фильтр-ветвь.

Я только что написал об этом в блоге .

ответил Mauricio Scheffer 5 FebruaryEurope/MoscowbFri, 05 Feb 2010 03:42:07 +0300000000amFri, 05 Feb 2010 03:42:07 +030010 2010, 03:42:07
0

svn2git просто использует «git svn» внизу, так что это не будет «лучше» как таковое. Это просто делает хорошие теги и ветки и очищает вещи для чистого разрыва с SVN. Если это то, что вы хотите, я бы пошел дальше и использовал его в двух суб-репозиториях по отдельности. Он получит всю соответствующую историю.

ответил ebneter 9 +04002009-10-09T02:28:35+04:00312009bEurope/MoscowFri, 09 Oct 2009 02:28:35 +0400 2009, 02:28:35
0

Вы уже пробовали встроенный

git svn clone

git-svn

ответил jitter 9 +04002009-10-09T01:15:47+04:00312009bEurope/MoscowFri, 09 Oct 2009 01:15:47 +0400 2009, 01:15:47
0

Ваша "текущая" структура уже имеет всю историю из предыдущей структуры. Итак, клонируйте каждый проект с помощью git svn clone должно работать нормально.

Не нужно будет рассказывать Git о предыдущей структуре с несколькими проектами в каталоге trunk.

Самое замечательное в Git заключается в том, что вы можете попробовать выполнить миграцию столько раз, сколько захотите, пока не будете удовлетворены результатом.

ответил Greg Hewgill 9 +04002009-10-09T02:02:39+04:00312009bEurope/MoscowFri, 09 Oct 2009 02:02:39 +0400 2009, 02:02:39
0

Используйте git svn clone -s SVN_REPOS, чтобы git клонировал репозиторий Subversion, предполагая стандартную компоновку Subversion. Вы получите локальную ветку git с именем master, но git branch -a покажет вам все удаленные ветки. Ветви Subversion будут просто иметь имя ветви, а теги будут иметь имя ветви tags/tag_name.

Не используйте повторно имена веток /тегов при локальном клонировании! мерзавцу это не нравится.

Это руководство мне очень помогло.

http://www.viget.com/extend/эффективно использующий-GIT-с-подрывной /

ответил David M 9 +04002009-10-09T02:29:21+04:00312009bEurope/MoscowFri, 09 Oct 2009 02:29:21 +0400 2009, 02:29:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132