Cuando ejecuto git log --stat
en un repository donde la mayoría de los cambios ocurren en el mismo subtree en lo profundo de la jerarquía, puedo get algo como esto:
$ git log --stat commit xxxxxxx Author: xxx Date: xxx commit message .../toplevel/networking/services/cool_analysis/Makefile | 10 ++ .../networking/services/cool_analysis/cool_analysis_main.c | 209 +++............ .../subdirectory/util/cool_analysis_helper.c | 112 +++.......
donde todo comparte el prefijo común xxx/toplevel/networking/services/cool_analysis
(y el subdirectory
es runder eso) pero la salida de git log --stat
hace que sea realmente difícil reconocer el hecho, porque se abrevian cantidades diferentes de los prefijos de la ruta de acceso. En cambio, me gustaría algo como esto:
$ git log --stat --strip=xxx/toplevel/networking/services/cool_analysis commit xxxxxxx Author: xxx Date: xxx commit message .../Makefile | 10 ++ .../cool_analysis_main.c | 209 +++............ .../subdirectory/util/cool_analysis_helper.c | 112 +++.......
¿Hay alguna forma de get esto? El manual no parece tener nada al respecto, y el procesamiento posterior de la salida con sed
o algo es difícil porque los nombres de las routes ya están abreviados. ( git log --name-only
proporciona nombres de ruta completos no abreviados, pero no proporciona las statistics).
Puedes probar esto:
git log --stat --oneline --relative=[path]
--relative[=<path>]
Cuando se ejecuta desde un
subdirectory
del proyecto, se le puede decir que excluya los cambios fuera del directory y muestre los nombres de ruta relacionados con esta opción. Cuando no está en un subdirectory (por ejemplo, en un repository vacío), puede nombrar qué subdirectory hará que la salida sea relativa dando un argumento como.
Aquí hay 2 capturas de pantalla con las diferencias.
Puede usar el parámetro --relative
para esto.
git log --stat --relative=xxx/toplevel/networking/services/cool_analysis
Si ya está en el directory correcto, no necesita proporcionar la ruta a --relative
.