2010-01-28 17 views
6

Aquí está la situación: tenemos un gran repositorio de svn, que es el "maestro" (no puede cambiar esto porque en realidad es "propiedad" de otra empresa). Preferiríamos trabajar localmente en git para obtener la flexibilidad de ramificación y la velocidad que ofrece git. Pero no queremos clonar todo el repositorio.¿Cómo crear un clon git con ramas de un "subproyecto"?

La estructura del repositorio se ve más o menos así:

/trunk/project1/* 
     /project2/* 
/branches/branch/project1/* 
       /project2/* 
/tags/tag1/tag1a/project1/* 
      /tag1b/project1/* 
    /tag2/tag2a/project2/* 

Sólo estoy interesado en el proyecto 1, pero me gustaría tener tanto tronco y las ramas (etiquetas no son tan importantes, pero sería bueno obtenerlos, también).

soy capaz de obtener una sola rama clonado con estos ajustes SVN-remoto:

[svn-remote "svn"] 
    url = https://svn.company.com/svn/branches/branch1/project1 

pero realmente quiere conseguir la estructura de ramificación, también. He pensado en utilizar ignore-caminos:

[svn-remote "svn"] 
    ignore-paths=^project2|^project3|... 

pero me gustaría tener que actualizar los ignore-caminos cada vez que se añade un nuevo directorio de nivel superior "proyecto", que no es realmente sostenible.

En segundo lugar, realmente solo necesitamos las etiquetas en/tags/tag1 (si necesitamos etiquetas). Cualquier idea sobre cómo hacer eso sería apreciada.

Respuesta

6

creo que el siguiente en su archivo .git/config debería funcionar:

[svn-remote "svn"] 
    url = https://svn.company.com/svn 
    trunk = trunk/project1:refs/remotes/svn/trunk 
    tags = tags/*/project1:refs/remotes/svn/tags/* 
    branches = branches/*/project1:refs/remotes/svn/branches/* 

basé esto en el configuration section of the git-svn manpage

+0

Sí, que hizo el trabajo. Una rareza es que la ruta exclude que funcionaba cuando estaba revisando una sola rama parece no estar funcionando aquí. Tenía url = https://svn.company.com/svn/branches/branch1/project1 ignore-paths =^baddir/ y "baddir" no se ha extraído de svn. Con las mismas rutas de ignorar pero con los svn-remote defs anteriores, se busca "baddir". – Spencer