¿Es posible migrar de subversión a git manteniendo el historial de las twigs, tags y troncales copydos?

He visto varias publicaciones SO sobre esto sin resolución.

Tengo un repository de subversión, que aloja múltiples proyectos. Me gustaría migrar uno de esos proyectos a GIT mientras conserva un historial que contiene copys de twigs, tags y troncales.

Este proyecto originalmente tenía la estructura:

root/ dir/ mod1/ trunk/ branches/ tags/ mod2/ trunk/ branches/ tags/ ... 

Inicialmente, estos proyectos se desarrollaron como proyectos independientes, pero resulta que están más relacionados de lo que pensábamos originalmente y decidimos reorganizar copyndo todos los directorys de troncales, twigs y tags individuales para que estén debajo de dir/ para que se vea así:

 root/ dir/ trunk/ mod1/ mod2/ ... branches/ tags/ 

Mi git svn clone ve así:

 git svn clone --no-metadata <svn_url>/root/dir -s git-svn-clone 

Después de eso termina y limpio mis twigs y tags de esta manera , pero cuando hago un git log , solo veo el historial comenzando en el punto en que esa twig / tags / troncal fue copyda en svn.

He intentado con git log --follow pero eso no funciona. -M -C and --find-copies-harder opciones -M -C and --find-copies-harder y todas muestran lo mismo.

Pensé que al asegurarme de que cloné todas las twigs, tags y troncos, ese git podría encontrar a los padres de los directorys que se copyron.

Es lo que quiero simplemente no posible? No sería lo peor del mundo no tener la historia, pero sería bueno.

Puede usar el subgit que he usado para migrar mi repository local de subversión a git.

Desafortunadamente, no hay una solución llave en mano para esto (al less no conozco ninguno). En situaciones como esta, siempre comienzo con un git svn clon del directory raíz, y hago un git fast-export --no-data después. Luego escribo un script, que transforma todas las twigs de svn en las twigs de int git, y utiliza este script para generar un file fas-import que a su vez crea el historial de git.

El principal problema es que las fusiones de svn se ignoran fácilmente (depende también si se registran correctamente en svn), de forma que una fusión se parece a una gran confirmación en la twig integrante, mientras que la twig de origen finaliza "en el air".

Esto es lo que hice que funcionó impecablemente: (ver http://svnrating.com/svn-to-git-migration/ )

Primero, inicialice un nuevo repository para la migration de svn a git $ mkdir migration $ cd migration $ git svn init –stdlayout –prefix = svn /

A continuación, obtenga el repository svn $ git svn fetch

Si el repository es grande, esto podría demorar un time. Una vez que haya terminado, puede enviar el repository que acaba de crear a su control remoto o usarlo localmente.