tortoise - svn tutorial español
¿Cómo puedo ver todos los cambios históricos en un archivo en SVN? (8)
El comando extrañamente llamado "culpa" hace esto. Si usa Tortoise, le ofrece un cuadro de diálogo "a partir de la revisión", luego un listado de archivo con un indicador de línea por línea del número de revisión y el autor al lado.
Si hace clic derecho en la información de la revisión, puede abrir un cuadro de diálogo "Mostrar registro" que proporciona información de registro completa, junto con otros archivos que formaban parte del registro.
Sé que puedo svn diff -ra:b repo
para ver los cambios entre las dos revisiones especificadas. Lo que me gustaría es una diferencia para cada revisión que cambió el archivo. ¿Hay tal comando disponible?
Empezar con
svn log -q file | grep ''^r'' | cut -f1 -d'' ''
Eso le proporcionará una lista de revisiones en las que se modificó el archivo, que luego puede usar para realizar scripts de llamadas repetidas a svn diff
.
Gracias, Bendin. Me gusta mucho tu solución.
Lo cambié para que funcione en orden inverso, mostrando primero los cambios más recientes. Lo cual es importante con el código de larga data, mantenido durante varios años. Por lo general, lo canalizo en más.
svnhistory elements.py |more
Agregué -r al género. Eliminé las especificaciones manejo para ''primer registro''. Es error en la última entrada, ya que no hay nada con lo que diferir. Aunque estoy viviendo con eso porque nunca llego tan lejos.
#!/bin/bash
# history_of_file
#
# Bendin on : http://.com/questions/282802
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there''s not previous version to compare it to.
#
# Dlink
# Made to work in reverse order
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -nr | {
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
history_of_file $1
Ligeramente diferente de lo que describiste, pero creo que esto podría ser lo que realmente necesitas:
svn blame filename
Imprimirá el archivo con cada línea con el prefijo de la hora y el autor de la confirmación que la modificó por última vez.
No tiene un comando incorporado, por lo que generalmente hago algo como esto:
#!/bin/bash
# history_of_file
#
# Outputs the full history of a given file as a sequence of
# logentry/diff pairs. The first revision of the file is emitted as
# full text since there''s not previous version to compare it to.
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -n | {
# first revision as full text
echo
read r
svn log -r$r $url@HEAD
svn cat -r$r $url@HEAD
echo
# remaining revisions as differences to previous revision
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
Entonces, puedes llamarlo con:
history_of_file $1
Por lo que sé, no hay un comando svn incorporado para lograr esto. Debería escribir un script para ejecutar varios comandos para compilar todos los diffs. Un enfoque más simple sería usar un cliente svn GUI si esa es una opción. Muchos de ellos, como el complemento subversivo para Eclipse, enumerarán el historial de un archivo y le permitirán ver la diferencia de cada revisión.
Puede usar git-svn
para importar el repositorio en un repositorio de Git, luego use git log -p filename
. Esto muestra cada entrada de registro para el archivo seguido de la diferencia correspondiente.
Si desea ver el historial completo de un archivo con cambios de código:
svn log --diff [path_to_file] > log.txt