cómo detectar propiedades modificadas usando log SVN
-
19-09-2019 - |
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.
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