Utilizo un repository de Git en mi server para la versión de los files de datos de usuario enviados al server. Estoy interesado en get una list de files modificados entre dos revisiones.
Sé acerca de git diff --name-only <rev1> <rev2>
, pero esto solo me da una list de nombres de files. También me interesan especialmente los cambios de nombre y las copys. Idealmente, la salida sería algo como esto:
updated: userData.txt renamed: picture.jpg -> background.jpg copied: song.mp3 -> song.mp3.bkp
¿Es posible? --name-status
tampoco parece indicar cambios de nombre y copys.
git diff --name-status -C <rev1> <rev2>
debería estar más cerca de lo que estás buscando.
--name-status
mostraría los nombres de los files y sus respectivos estados:
(A|C|D|M|R|T|U|X|B)
Agregado (A), Copiado (C), Eliminado (D), Modificado (M), Renombrado (R),
tipo (es decir, file regular, enlace simbólico, submodule, …) cambiado (T),
Sin fusionar (U), Desconocido (X) o sincronizado Roto (B)
(a lo que el OP Jean Philippe Pellet agrega:
Las letras de estado
R
yC
"siempre van seguidas de una puntuación que indica el porcentaje de similitud entre la fuente y el destino del movimiento o la copy, y son los únicos que lo son").
Respecto a los files copydos o movidos:
-C[<n>] --find-copies[=<n>]
Detecta copys y cambia el nombre. Si se especifica
n
, tiene el mismo significado que para-M<n>
.
--find-copies-harder
Por motivos de performance, de forma pnetworkingeterminada, la opción
-C
encuentra copys solo si el file original de la copy se modificó en el mismo set de cambios.
Este indicador hace que el command inspeccione los files no modificados como candidatos para la fuente de copy.
Esta es una operación muy costosa para proyectos grandes, así que ústela con precaución. Dar más de una opción-C
tiene el mismo efecto.
brauliobo recomienda en los comentarios :
git diff --stat -C git show --stat -C git log --stat -C
Creo que “ mostrará esa información
git diff -M -C --stat