una tag subir revertir ignorar eliminar deshacer descartar crear copia con como cambios archivos archivo windows svn command-line

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:


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 var var junto con el patrón de búsqueda var="^ [D] ${FILENAME}$"
  • En el programa awk /^r[0-9]+/ {rev=$1} asigna el número de revisión a rev 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 almacenado rev 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).