2009-01-06 17 views
6

¿Alguien sabe cómo exportar solo los archivos modificados de dos etiquetas usando svn?SVN exporta solo los archivos modificados de las etiquetas

Digamos que tengo la etiqueta 1.0 y luego corrijo errores en la cajuela. A continuación, estoy listo para un nuevo lanzamiento de parche, así que lo etiqueto 1.1. Ahora quiero exportar los archivos modificados entre la etiqueta 1.0 y 1.1. es posible?

+0

Creo que esto sería manejar lo que está tratando de hacer: [http://stackoverflow.com/questions/42246/subversion-partial-export](http://stac koverflow.com/questions/42246/subversion-partial-export) – Jared

Respuesta

12

svn diff --summarize url/a/tag1.0 url/a/tag1.1

le dará una lista de archivos que cambió entre esas dos etiquetas. Usted debe ser capaz de analizar esa lista en un guión y exportar cada archivo individualmente con ruta de archivo, ya sea

SVN url de exportación/a/archivo

o

URL svn cat/a de archivo> archivo/

Si está utilizando TortoiseSVN:

  • abrir el navegador de repositorios, vaya a tag1.0, haga clic derecho, seleccione "marca para la comparación"
  • de exploración para tag1.1, haga clic derecho, selecciona "Comparar las direcciones URL"
  • en el diálogo de archivo diff, seleccionar todos los archivos/carpetas que cambiaron entre las etiquetas (Ctrl + A)
  • botón derecho, elija " exportar a ... "
+0

cuando selecciono todas las exportaciones a no existe, funciona solo para un archivo: -/ – Sasha

1

Necesitábamos algo como esto también. Entonces escribí una pequeña herramienta de Java.

espero que sea útil a alguien: github svn-diff-export

9

Esta es my solution de TortoiseSVN:

  • Abrir el navegador de repositorios.
  • derecho tag1 clic y seleccionar "Marcar para la comparación"
  • clic derecho tag2 y seleccione "Búsqueda de direcciones URL"
  • Seleccionar todo (Ctrl + A) en la lista de archivos
  • clic derecho y "Exportar selección a ..."
  • Introduzca un directorio de destino y pulse OK

lo que termina exportada es todos los archivos que necesita para escribir sobre la parte superior de una exportación existente para actualizarla (sin jugar un poco diff que solicitan) Útil, por ejemplo, para actualizar sitios web por FTP.

La única advertencia es que obviamente no manejará los archivos eliminados. Aunque al menos le dirá qué archivos se deben eliminar manualmente.

+0

desafortunadamente, no mantendrá la estructura del directorio :( – gbjbaanb

+0

@gbjbaanb Sí lo hace. Recién probado con TSVN 1.6.7. –

+0

wow, lo hace - Originalmente utilicé la lista de archivos en el registro para una revisión, los seleccioné y 'exportar seleccione a ...' los escribe todos como un único directorio. Me pregunto si esa es una característica por diseño. – gbjbaanb

6
  1. Usando TortoiseSVN, haga clic derecho en su carpeta de trabajo y seleccione "Mostrar registro" en el menú de TortoiseSVN.

  2. Haga clic en la revisión que se publicó por última (# 85 en este ejemplo)

  3. Ctrl + clic en la revisión HEAD (o cualquier revisión que desea liberar es decir, # 178), de modo que tanto la antigua y la nueva las revisiones están resaltadas.

  4. Haga clic derecho en cualquiera de las revisiones resaltadas y seleccione "Comparar revisiones". Esto abrirá una ventana de diálogo que enumera todos los archivos nuevos/modificados.

  5. Seleccionar todos los archivos de esta lista (Ctrl + A) a continuación, haga clic en los archivos resaltados y seleccione “Exportar selección a ...”

Fuente: http://www.verysimple.com/blog/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/

0

Sobre la base de Stefan idea:

REV=123456 
URL=https://... 
BASEDIR=some_dir 
svn diff --summarize -c $REV $URL | while read A B; do 
    svn cat -r $REV $B > ${B##*$BASEDIR} 
done 
Cuestiones relacionadas