¿Cómo obtengo una copia de todas las versiones de un archivo del repositorio de subversión?
-
27-10-2019 - |
Pregunta
Tenemos una fuente personalizada (TTF) que agregamos a un repositorio de subversión. Hemos detectado un problema con ciertos personajes y no estamos seguros de cuándo se introdujo el problema. El archivo es, por supuesto, un archivo binario, por lo que no hay diferencias de texto para comparar, solo necesitamos contenerlo con los otros archivos del proyecto y la versión. De todos modos, me gustaría recuperar todas las versiones del archivo del repositorio. Tengo acceso a TortoisSVN (para Windows) y Cornerstone (para Mac); Sin embargo, también me siento cómodo usando la terminal. ¿Cómo puedo recuperar un archivo TTF para cada versión de la fuente que se registró en la subversión?
Solución
Esto es un poco crudo y estoy seguro de que hay soluciones mucho más elegantes, pero hace el trabajo. Establezca Grab_File y Grab_From_rev apropiadamente.
$ mkdir versions
$ GRAB_FILE="MGSource.h"
$ GRAB_FROM_REV=700
$ for i in `svn log -r$GRAB_FROM_REV:HEAD "$GRAB_FILE" | grep -o '^r[0123456789]*'`; do svn up "$GRAB_FILE" -$i; cp $GRAB_FILE versions/"$GRABFILE.$i.h"; done
Updated to revision 768.
U MGSource.h
Updated to revision 770.
U MGSource.h
Updated to revision 804.
U MGSource.h
Updated to revision 821.
$ ls -l versions/
total 56
-rw-r--r-- 1 me staff 1599 Mar 18 21:03 MGSource.r709.h
-rw-r--r-- 1 me staff 1705 Mar 18 21:03 MGSource.r759.h
-rw-r--r-- 1 me staff 1891 Mar 18 21:03 MGSource.r760.h
-rw-r--r-- 1 me staff 1882 Mar 18 21:03 MGSource.r768.h
-rw-r--r-- 1 me staff 2009 Mar 18 21:03 MGSource.r770.h
-rw-r--r-- 1 me staff 2009 Mar 18 21:03 MGSource.r804.h
-rw-r--r-- 1 me staff 1942 Mar 18 21:03 MGSource.r821.h
Otros consejos
Si está utilizando TortoisSVN, puede obtener esto muy fácil:
Muestre el registro para el archivo de fuente. Verá una lista de revisiones donde se cambió ese archivo en particular. Haga clic derecho en cualquiera de esas revisiones, solo elija "Guardar como ..." en el menú contextual y obtendrá el archivo como estaba en esa revisión.