with tortoise software migrar consola branches svn git

svn - tortoise - software git



git log output como svn ls-v (3)

Desea jugar con git log y sus bonitos formatos. A continuación, se incluye un ejemplo que no aborda por completo lo que desea, pero que debe ponerlo en camino:

git log --pretty=format:"%h: %s -- %an"

Huellas dactilares:

... 58a2e46: Added readme for github. -- DylanFM ...

¿Hay alguna manera de hacer que git me dé salida como svn ls -v does? Básicamente una lista de cada archivo y quién editó por última vez ese archivo? Me gusta esto:

filea.txt Someone Else fileb.txt Another Person

¿Tal vez incluso con el SHA para identificar el compromiso en el que ocurrió el cambio?


No es una pregunta muy natural preguntar en git, pero probablemente puedas lograr algo como lo que quieres con algo como esto.

for a in $(ls); do git log --pretty=format:"%h%x09%an%x09%ad%x09$a" -1 -- "$a"; done

Esto pasa por cada archivo en el directorio actual y realiza un git log para encontrar el último compromiso que lo ha afectado.

No es muy eficiente, ya que busca en el historial de git cada archivo y no hace ningún esfuerzo por reutilizar los resultados de búsquedas anteriores. Sin embargo, es un juego de una sola línea.


La pregunta es: ¿por qué lo necesitas? Actualmente git carece de un solo comando que haga "svn ls -v" equivalente, y tendrías que hacer un poco de scripting: la idea de "git log -1 - $ filename" es, creo, la solución más simple (en término de número de líneas de escritura para escribir); si lo hiciera, probablemente será como "culpa del git".

Pero supongo que hay una forma alternativa de resolver el problema que usaste "svn ls -v" para resolverlo.

Recuerde también que con la historia no lineal, la noción de quién modificó por última vez el archivo no es inequívoca.