2012-05-04 10 views
5

que tienen una estructura de recompra simple como esto:¿Cómo se evalúa ignore-paths en git svn?

trunk 
    code 
    othercode 
    doc 
    misc 
branches 
    b1 
     code 
     othercode 
     doc 
     misc 
    b2 
tags 
    t1 
    t2 

estoy tratando de utilizar git svn clonarlo, pero desea omitir doc y misc en el tronco + Todas las etiquetas y ramas. Sin embargo, la opción ignore-paths no está actuando como esperaba.

ignore-paths = (doc|misc) 

parece funcionar, pero me preocupa que también sería excluir un camino como trunk/code/proj1/doc/, que quiero seguir.

ignore-paths = ^(doc|misc) 

no funciona - doc y misc se tira en el comando inicial git svn fetch. ¿Cómo obtengo una expresión regular funcional que solo coincidirá con los directorios en la raíz de esta manera? La página del manual no dice si ignore-paths partidos contra el camino "relativo" que va a terminar en la raíz del clon de git (doc, etc.) o el camino "lleno" como se ve en el SVN remoto (branches/b1/doc etc.) , o algo mas.

Respuesta

9

Parece que coincida con la ruta completa en el repositorio SVN. Esta expresión regular, que incluye la parte trunk/tags/branches de la vía SVN, hizo el truco:

ignore-paths = ^(trunk|tags/[^/]*|branches/[^/]*)/(doc|misc)/ 

En palabras: la ruta debe comenzar con uno de:

  • trunk
  • tags/ , tal vez seguido de un segmento de trayectoria (que no contiene /)
  • branches/, tal vez seguido de un segmento de trayectoria (no containin g /)

... entonces segmento de trayectoria nombrado doc o misc.

+0

Esto no funciona. Los archivos se clonan de todos modos. –

+0

¿Hay un método equival para svn repos sin svn layout? – Spen

+0

@besnep, si se refiere a "sin * el diseño de svn estándar", entonces creo que sí: dado que la expresión regular se compara con la ruta completa, puede usarla independientemente de cómo esté configurado su repositorio. –