Migración Svn -> git con varios troncales / twigs / tags

Tengo un único repository SVN con la siguiente estructura actual :

  • Proyecto 1
    • twigs
    • el maletero
    • tags
  • proyecto2
    • twigs
    • el maletero
    • tags

que originalmente tenía esta estructura:

  • proyecto
    • twigs
    • el maletero
      • proj1
      • proj2
    • tags

Es decir, el proyecto se dividió en dos "subrepositorys" separados (o lo que sea que quieras llamar)

¿Hay alguna forma de migrar esto a git sin perder el historial ? ¿Sería svn2git mejor que git-svn para este escenario? ¿Hay alguna otra herramienta de migration?

EDITAR : Probé git svn clone como se sugirió pero, como pensé, no siguió el paso de la estructura anterior a la nueva. Solo importó las revisiones de la nueva estructura.

Primero convertí el tronco principal a git:

 git svn clone url-to-project -s 

Luego convertí cada proyecto:

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

Luego, para cada proyecto, adjunté el historial anterior del tronco principal usando injertos y twigs de filter.

Acabo de escribir en un blog sobre eso .

svn2git simplemente usa "git svn" debajo, por lo que no será "mejor" per se. Simplemente hace tags y twigs agradables y limpia las cosas para un descanso limpio de svn. Si eso es lo que quiere, seguiré adelante y lo usaré en los dos sub-repositorys individualmente. Obtendrá toda la historia apropiada.

¿Ya probaste el built-in

 git svn clone 

git-svn

Su estructura "actual" ya tiene toda la historia de la estructura anterior. Entonces, clonar cada proyecto usando git svn clone debería funcionar bien.

No será necesario informar a Git sobre la estructura anterior con múltiples proyectos en el directory troncal.

Lo mejor de Git es que puedes intentar la migration tantas veces como quieras hasta que estés satisfecho con el resultado.

Use git svn clone -s SVN_REPOS para hacer que git clone el repository de Subversion asumiendo un layout de Subversion estándar. Obtendrás una twig local de git llamada maestro, pero la git branch -a te mostrará todas las twigs remotas. Las sucursales de Subversion solo tendrán el nombre de la twig, pero las tags tendrán un nombre de twig de tags/tag_name .

¡No vuelva a utilizar nombres de twig / label cuando clone localmente! A Git no le gusta eso.

Esta guía me ayudó mucho.

http://www.viget.com/extend/effectively-using-git-with-subversion/