Clona un repository de git en el subdirectory de un repository de subversión

Tengo un repository SVN existente, que tiene un directory "común" que contiene modules compartidos por diferentes proyectos. El layout es así:

http://example.com/svn/trunk/common/module_1 http://example.com/svn/trunk/common/module_2 ... http://example.com/svn/trunk/common/module_X 

Por varias razones, estoy administrando algunos otros proyectos con git. Necesito usar module_X en proyectos SVN y git, así que estoy pensando en usar git-svn. Sin embargo, ocurre el siguiente problema:

 user@host:/repos$ git svn clone http://example.com/svn/trunk/common/module_X destination 

Este command creará un nuevo repository de git en / repos / destination y obtendrá el contenido de module_X en él. Lo que necesito lograr es poner module_X en / repos / destination / module_X , no search su contenido directamente en / repos / destination / .

Lo que parecía una opción al principio era usar

 user@host:/repos$ git svn clone =--ignore-paths='^((?!module_X).*)$' http://example.com/svn/trunk/common/ destination 

que hará un repository en / repos / destination , y un subdirectory / repos / destination / module_X . Pero el problema es que mi repository SVN tiene un historial de revisión bastante grande y las opreations en general common / path son bastante lentas.

¿Alguien tiene idea de cómo lograr esto?

respuesta corta: no puede o no quiere. Git no ha sido diseñado para alojar proyectos múltiples, y así clonar subdirectorys independientes, un proyecto git == one. Aunque puedes hacerlo (mira la muy perspicaz respuesta de: ¿cómo puedo clonar un subdirectory solo de un repository de Git? ), Perderás toda la capacidad de mantenerte al día con las actualizaciones.

Aunque puede haber un hack que podrías intentar, es decirle a git-svn que cree una twig para cada module que tengas, aquí tienes un buen ejemplo: clonar un repository de Svn no estándar con Git-Svn , algo que debería verse como :

 % git svn clone https://svn.myrepos.com/myproject myproject --ignore-paths='^((?!common).*)$' --trunk=trunk/ --branches=trunk/common/* --prefix=svn/ 

(no probado)