2015-09-10 3 views
-1

Я новичок в git-svn-мосте и столкнулся с задачей перехода от SVN-репо к GIT. Структура SVN выглядит действительно страшно:Миграция из SVN multi-repo в GIT

root 
    base 
    server 
     core 
     branch 
     tags 
     trunk 
     webapp 
     branch 
     tags 
     trunk 
     .... 
    client 
     core 
     branch 
     tags 
     trunk 
     .... 
    .... 
    .... 

Как «талантливый Svn Migrate-мастер», я выполнил git svn clone ..../root и клонировали весь репозиторий. У меня нет филиалов, видимых GIT:

$ git branch -a * master remotes/git-svn

я могу легко перейти к root-base-server-core-branch-my-awesome-branch, и это выглядит как обычная папка.

Как продолжить беседу svn2git? Похоже, я должен начать с нуля, но клонирование этого зла заняло одну неделю, и я не хочу ждать снова ...

ответ

1

У вас есть несколько проектов svn в этом репо. Вы хотите объединить их в git? Возможно, вы захотите изучить отдельный репозиторий git для клиента, ядра и webapp.

Посмотрите на git svn clone's --branches, это может занять несколько подстановочных знаков, которые вам могут понадобиться в этой ужасной структуре svn. Что-то вроде --branches=*/*/*/*/branch/*

Вы также можете использовать несколько --branches как в --branches=coked/out/path/branch/* --branches=totally/messed/up/path/branches/*

С помощью:

 -T<trunk_subdir>, --trunk=<trunk_subdir>, -t<tags_subdir>, --tags=<tags_subdir>, -b<branches_subdir>, 
     --branches=<branches_subdir>, -s, --stdlayout 
      These are optional command-line options for init. Each of these flags can point to a relative repository path 
      (--tags=project/tags) or a full url (--tags=https://foo.org/project/tags). You can specify more than one --tags and/or 
      --branches options, in case your Subversion repository places tags or branches under multiple paths. The option 
      --stdlayout is a shorthand way of setting trunk,tags,branches as the relative paths, which is the Subversion default. If 
      any of the other options are given as well, they take precedence.