Pregunta

Antecedentes:. Escribir un guión de liberación automática para exportar los archivos modificados entre las versiones de SVN y subir al servidor remoto

Los espectáculos de comando svn log archivos modificados y propiedades, pero parece que no distingue su salida detallada entre una modificación del contenido sobre la modificación de propiedades.

¿Estoy leyendo esto mal de salida, o hay una manera fácil de obtener una lista de ficheros cambiados entre revisiones ignorando los cambios prop

Aquí está mi cmd de ejemplo:

#: svn log "someurl" -r 2210:HEAD -v -q

Output:
------------------------------------------------------------------------
r2211 | author | 2010-02-08 12:36:56 +1300 (Mon, 08 Feb 2010)
Changed paths:
   M /branches/project/release-v1-r-maintenance
   M /branches/project/release-v1-r-maintenance/offroot/
   M /branches/project/release-v1-r-maintenance/offroot/test.config
------------------------------------------------------------------------

Los dos primeros sólo son prop cambios (info de fusión, ignora, etc), mientras que el tercero artículo es un contenido de edición actual y éste es el artículo real que quiero agarrar para evitar la exportación de la raíz entera de todo.

¿Hay alguna forma de obtener / filtrar sólo los cambios en el contenido del registro de SVN u otro comando.

¿Fue útil?

Solución

Para su información, he publicado un script bash más en Como hacer ' svn log' ignorar los cambios de propiedad? que implementa lo que se refería a jeroenh ... procesar la salida de svn log para conducir svn diff y filtrado en la salida de este último.

Otros consejos

Aquí es un script que acabo de escribir para obtener un registro detallado de todas las revisiones en el que los cambios de propiedad dentro del directorio actual en la que SVN hecho. Sólo tiene que colocar la versión de inicio y final justo donde se adivina el propertyChange sucedió. No es muy rápido, pero funciona.

#!/bin/bash
# Show the verbose log of the revisions, where svn properties 
# inside the current folder where added/removed
startrev=4600
endrev=4620
for i in $(eval echo {$startrev..$endrev})
  do
    svn diff -c $i 2>/dev/null | grep "Property changes on" 1>/dev/null
    if [ $? == 0 ]; then
      echo "Property change in revision $i:"
      svn log -r $i --verbose
    fi
done

Creo que la única manera de hacerlo es analizar realmente la salida del diff para cada revistion, sin embargo, que parece bastante frágil, y probablemente muy lento ...

Esto es como una entrada de diff busca un archivo con propiedades solamente se pueden cambiar:

c:\test\wc>svn diff -c 3

Property changes on: test.txt
___________________________________________________________________
Added: test
   + test

Esto es como una entrada de diff busca un archivo con contenidos modificados y cambiados propiedades:

c:\test\wc>svn diff -c 4
Index: test.txt
===================================================================
--- test.txt    (revision 3)
+++ test.txt    (revision 4)
@@ -1 +1,2 @@

+asdfads

Property changes on: test.txt
___________________________________________________________________
Added: someproperty
   + somepropertyvalue

Sé que esta pregunta ha sido contestada, pero en caso de que alguien quisiera una pequeña guía que he hecho este post sobre cómo conseguir obtener datos consultables desde svn log / diff (incluyendo scripts bash, XSLT y scripts de bases de datos Oracle). Hacer esto le permite ejecutar todo tipo de consultas útiles contra la opinión de v_svnlog

Los archivos "calientes" en este parche:

select path, count(*) num from v_svnlog
group by path
order by num desc, path asc

La mayoría de las pruebas realizadas por el autor

select author, count(*) num from v_svnlog
where path like '%Test%'
group by author
order by num desc

y así sucesivamente ...

¿Esto funciona?

svn log --xml --with-no-revprops
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top