2010-10-29 18 views
7

Aquí está el problema:¿Cómo puedo copiar un árbol de directorios pero excluir directorios .svn?

Pasa por todos los archivos y subcarpetas copiando todo el contenido EXCEPTO .svn en otra ubicación.

Puedo pensar en algunas formas bastante peludas para hacer esto, pero me pregunto si alguien conoce una función realmente simple para ahorrarme un poco de tiempo? Gracias.

+2

Fuera de interés, y habiendo visto la respuesta. Estoy siendo estúpido, pero ¿cuál es la razón para sacar esto del control de la subversión? ¡esta es una verdadera pregunta temeraria! – brumScouse

+0

Hice una cosa similar para hacer una copia de seguridad de una copia local de un repositorio en el trabajo porque era bastante grande para pagar cada vez, ahorrando mucho tiempo. Era solo una copia de "aprendizaje/interrupción" que no se iba a volver a verificar; de lo contrario, no lo recomendaría. –

+2

Debe modificar la pregunta para indicar más claramente que está usando AutoIt, o eliminar esa etiqueta si no necesita una solución AutoIt. –

Respuesta

20

se puede utilizar el comando svn export. Completará una carpeta de destino con el contenido de una copia de trabajo (o una revisión en un repositorio).

+0

Solo un aviso. El OP quiere copiar _todo el contenido_, que puede incluir archivos que no están bajo el control de la versión. La documentación indica claramente que 'svn export' NO COPIA _ archivos que no estén bajo el control de versión_. – MSX

+0

@msx sí podría tener, de acuerdo con el texto literal de la pregunta. Afortunadamente, el problema real, que se encuentra debajo de las palabras y el fraseo, era sobre la versión del contenido controlado – xtofl

+0

@xtofl. Estoy de acuerdo con usted. Aceptar su respuesta como la mejor indica que el OP está completamente satisfecho con la solución. Yo mismo estaba buscando una solución para copiar todo, pero la carpeta '.svn' y' svn export' no resuelven mi problema. Por lo tanto, mi comentario ... espero que les dedique tiempo a otros que buscan la solución a un problema similar al mío. – MSX

5

Utilice rsync y el interruptor --exclude.

... aunque en este caso específico, la mejor opción es svn export

0

Si está utilizando TortoiseSVN, utilice Exportar ...

3

Nos utiliza a veces que no tiene comparación (http://beyond-compare.softonic.com/): seleccione el directorio raíz de origen y el destino de uno, excluir .svn y hacer una sincronización. Esto es útil si necesita hacerlo de nuevo: guarda las configuraciones como un proyecto.

1

Así que mi manera rápida y sucia de hacer esto fue recientemente usando Python:

for root, dirs, files in os.walk(inRootDirArg): 
     for d in dirs: 
      if d.startswith('.'):#excludes directories that start with '.' 
       continue 
      ...<logic to move your desired directories>... 

Esta solución no tiene en cuenta cualquier directorio comenzando con una, pero si lo que necesitaba para ser más específico no es difícil ''. modificarlo para omitir solo directorios .svn.

0

Uso Cmd

Dir/a-d/s/b >>1.txt 

y Uso AutoIt para leer el archivo, mejor usar _FileReadToArray y de en un bucle, compruebe la ruta del archivo si tiene un' .svn'in que

0

Si no se necesita autoit, puede utilizar xcopy con un archivo de exclusión:

xcopy "..\source\" "..\destination\" /E /Y /R /exclude:exclude.txt 

exclude.txt debe contener:

\.svn\ 
Cuestiones relacionadas