2016-09-21 11 views
-1

У меня есть довольно большой svn-репозиторий со структурой, подобной приведенной ниже. У меня несколько репозиториев/проектов в рамках одного крупного проекта. Я устанавливаю svn2git для передачи svn в git, но мне кажется, что я должен делать каждый отдельный проект один за другим. Есть ли более простой/более автоматический способ перемещения этого svn-репо на git? Я хочу, чтобы убедиться, что я сохранить историю совершения и т.д.Преобразование SVN repo в git

Я не совсем уверен, что если эта команда будет поместить каждый «проект» в его собственную папку: svn2git https://my_repo/svn/my_repository

Одна проблемы, я мог видеть заключается в том, что некоторые из этих папок проекта не соответствуют традиционной структуре соединительных линий и тэгов. Любые идеи, как я мог бы это достичь?

my_repository 
    project1 
      trunk 
       ... 
      tags 
       1.0.0 
       1.0.1 
       1.0.2 

    project2 
      trunk 
       ... 
      tags 
       1.0.5 
       1.0.6 
       1.0.7 

     project3 
      src 
       ... 
      file1 
      file2 

     project4 
      trunk 
       ... 
      tags 
       1.0.5 
       1.0.6 
       1.0.7 

ответ

1

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

От вас вопрос я вижу, что вы не используете этот svn2git, но рубин один, который основан на git-svn который не правильный инструмент для преобразования разовых хранилищ или хранилища частей. Это отличный инструмент, если вы хотите использовать Git как интерфейс для существующего сервера SVN, но для одноразовых конверсий вы должны не использовать git-svn.

Если вы не 100% об истории своего репозитория, svneverever от http://blog.hartwork.org/?p=763 - отличный инструмент для изучения истории хранилища SVN при переносе его на Git.

Вы можете легко настроить инструмент с его файлом правил, чтобы сделать именно то, что вы хотите, в том числе различные макеты для проектов и разделить свой root SVN на несколько репозиториев Git, как вам нравится.


Несмотря на то, ГИТ-SVN проще начать с, вот некоторые другие причины, почему с помощью KDE svn2git вместо git-svn превосходит, кроме своей гибкости:

  • история перестраивается гораздо лучше и уборщик svn2git (если используется правильный), это особенно относится к более сложным историям с филиалами и слияниями и т. д.
  • теги являются реальными тегами, а не ветвями в Git
  • с git-svn теги содержат дополнительную пустую фиксацию, которая также делает их не частью ветвей, поэтому нормальный fetch не получит их до тех пор, пока вы не дадите команду --tags, поскольку по умолчанию выбираются только теги, указывающие на извлеченные ветви.С правильными тегами svn2git, где они принадлежат
  • если вы изменили макет в SVN вы можете легко настроить это с svn2git, с git-svn вы потеряете историю в конце концов
  • с svn2git вы можете также разделить один репозиторий SVN на нескольких хранилищ Git легко
  • или объединить несколько репозиториев SVN в том же корне SVN в один репозиторий Git легко
  • преобразование является Gazillion раз быстрее с правильным svn2git чем с git-svn

Существует много причин, по которым git-svn хуже, и KDE svn2git является превосходным. :-)