Cómo arreglar las twigs de la estructura de directory parcial en SVN a la migration de Git

Estoy tratando de convertir un repository SVN que contenga una aplicación Java EE en un repository Git. El repository original contiene una carpeta para cada parte del proyecto Java EE que se ha mantenido como proyectos separados en cuanto a la historia. Para dos de los proyectos también hay una twig de "producción" (de nuevo, dos twigs separadas) y cada vez que una nueva revisión entra en producción, el tronco se fusiona en producción.

Cuando importo esto en un único repository git (como sé que sería la mejor práctica) todo en master está bien, pero cuando cambio a una twig solo obtengo los files de esa twig y la mayoría de las otras carpetas y files desaparecen.

Diseño de repository

/ trunk/ project1/ project2/ project3/ project4/ branches/ project3-production-branch/ project4-production-branch/ tags/ 

Encontré una publicación de Eric Gwin sobre este tema, pero no pude ver si había alguna solución. http://comments.gmane.org/gmane.comp.ide.eclipse.git/77

Es posible que esté pasando por alto algo muy elemental, pero me temo que la única solución es importar los proyectos por separado. ¿Alguna sugerencia de cómo puedo importar todo el SVN-repo y get twigs de trabajo en Git?

Situación inicial

Después de convertir esto a un único repository, la estructura del directory en el maestro (o troncal) se ve así:

 project1/ project2/ project3/ project4/ 

La estructura después de la primera confirmación de la project3-production-branch ve así:

 project3/ 

O contiene los contenidos de project3 directamente:

 .project src/ test/ 

Esto depende de dónde se copió la twig en Subversion.

En el primer caso, el siguiente paso se puede omitir.

En ambos casos, todos los otros proyectos fueron eliminados en la twig (debe ver eso en la diferencia de la primera confirmación) y necesitan ser restaurados, vea el segundo paso.

Paso 1: Reescribir la twig para mover todos los contenidos a un subdirectory (si es necesario)

Vea el ejemplo "Para mover todo el tree en un subdirectory" en filter-branch y ejecútelo solo en la twig, así:

 git filter-branch --index-filter \ 'git ls-files -s | sed "s-\t\"*-&project3/-" | GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ git update-index --index-info && mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' \ master..project3-production-branch 

Paso 2: reescribir la twig para restaurar otros proyectos

En este paso, deseamos deshacer la eliminación de los otros proyectos en la primera confirmación de sucursal. Esto se puede hacer usando lo siguiente:

 branch="project3-production-branch" parent=`git merge-base $branch master` # or replace master with trunk if needed paths="project1 project2 project4" git filter-branch -f --index-filter \ "git reset -q $parent -- $paths" --tag-name-filter cat -- \ $parent..$branch 

Restablece las otras routes al estado en el que se encontraban cuando se creó la bifurcación, para todas las confirmaciones de la bifurcación.