windows - tag - revertir cambios svn
SVN: ¿Cómo saber en qué revisión se eliminó un archivo? (3)
Dado que estoy usando la línea de comandos svn en Windows, ¿cómo encontrar el número de revisión en el que se eliminó un archivo? En Windows, no hay cosas sofisticadas como grep y yo intentando usar solo la línea de comandos, sin TortoiseSVN. ¡Gracias por adelantado!
EDITAR:
- Vi algunas publicaciones, como examinar el historial de un archivo eliminado pero no respondió mi pregunta.
- ¿Hay alguna otra forma que no sea svn log -v url> log.out y busque con el Bloc de notas?
El registro es el lugar para mirar. Sé que no quieres escuchar esa respuesta, pero ahí es donde necesitas buscar los archivos eliminados en SVN.
La razón de esto es simplemente que un archivo eliminado no es visible después de haber sido eliminado. El único lugar para enterarse de su existencia es en los registros, o buscando una revisión anterior antes de que se elimine.
La forma más fácil que conozco para resolver este problema es alejarse de la línea de comandos y usar una herramienta GUI como TortoiseSVN .
TortoiseSVN se enlaza con el Explorador de archivos estándar de Windows, por lo que es muy fácil de usar. En el contexto de responder a esta pregunta, todavía lo utilizarías para mirar los registros, pero se convierte en un ejercicio mucho más rápido:
Navegador a la carpeta SVN que desea examinar. Luego haga clic con el botón derecho en el icono de la carpeta y seleccione TortoiseSVN -> Ver registros en el menú contextual.
Ahora obtendrá una ventana que muestra todas las revisiones realizadas en esa carpeta. En particular, es fácil ver qué revisiones han tenido adiciones y eliminaciones, ya que la lista incluye un conjunto de iconos de Acción para cada revisión. Puede hacer doble clic en una revisión para obtener una lista de archivos que se cambiaron (o directamente en una vista de diferencias si solo se cambió un archivo)
De este modo, puede ver fácilmente qué revisiones han tenido eliminaciones y puede hacer clic rápidamente en ellas para averiguar qué archivos estaban involucrados. Realmente es así de fácil.
Sé que estás preguntando por la línea de comandos, pero para tareas administrativas como esta, un navegador GUI realmente tiene sentido. Esto hace que sea mucho más rápido ver lo que está sucediendo en comparación con tratar de leer las páginas de texto críptico (no importa lo versado que esté al leer ese texto).
Esta pregunta fue publicada y contestada hace algún tiempo. En esta respuesta, intentaré mostrar una manera flexible de obtener la información solicitada y ampliarla.
En cygwin, use svn log
in en combinación con awk
REPO_URL=https://<hostname>/path/to/repo
FILENAME=/path/to/file
svn log ${REPO_URL} -v --search "${FILENAME}" | /
awk -v var="^ [D] ${FILENAME}$" /
''/^r[0-9]+/{rev=$1}; /
$0 ~ var {print rev $0}''
-
svn log ${REPO_URL} -v --search "${FILENAME}"
le pide a svn log un registro detallado que contenga $ {FILENAME}. Esto reduce la transferencia de datos. - El resultado se canaliza a
awk
.awk
obtiene${FILENAME}
pasado a través de-v
en varvar
junto con el patrón de búsquedavar="^ [D] ${FILENAME}$"
- En el programa
awk
/^r[0-9]+/ {rev=$1}
asigna el número de revisión arev
si la línea coincide/^r[0-9]+/
. - Para cada línea que coincida con
^ [D] ${FILENAME}$
awk imprime el número de revisión almacenadorev
y la línea:$0 ~ var {print rev $0}
si está interesado no solo en la eliminación del archivo, sino también en la creación, modificación, reemplazo, cambie D
en var="^ [D] ${FILENAME}$"
a DAMR
.
Lo siguiente te dará todos los cambios:
svn log ${REPO_URL} -v --search "${FILENAME}" | /
awk -v var="^ [DAMR] ${FILENAME}$" /
''/^r[0-9]+/ {rev=$1}; /
$0 ~ var {print rev $0}''
Y si estás interesado en nombre de usuario, fecha y hora:
svn log ${REPO_URL} -v --search "${FILENAME}" | /
awk -v var="^ [DAMR] ${FILENAME}$" /
''/^r[0-9]+/ {rev=$1;user=$3;date=$5;time=$6}; /
$0 ~ var {print rev " | " user " | " date " | " time " | " $0}''
Instale Cygwin.
Yo uso esto:
svn log -v --limit <nr> -v | grep -E ''<fileName>|^r'' | grep -B 1 <fileName>
dónde
fileName - the name of the file or any pattern which matches it
nr - the number of latest revisions in which I want to look for
Esto le dará las revisiones para todas las acciones (agregar, eliminar, eliminar, modificar) relacionadas con el archivo, pero con un simple ajuste con grep
puede obtener las revisiones solo para su eliminación.
(Obviamente, --limit es opcional, sin embargo, por lo general, tiene una visión general sobre qué tan profundo necesita buscar para obtener algo de rendimiento).