2012-10-01 14 views
7

Estoy tratando de escribir un script bash 'live git log'. Aquí está el código hasta ahora:saliendo de registro de git desde un script bash

#!/bin/sh 
while true; 
do 
    clear 
    git log --graph -10 --all --color --date=short --pretty=format:"%Cred%x09%h %Creset%ad%Cblue%d %Creset %s %C(bold)(%an)%Creset" 
    sleep 3 
done 

mi problema es que git log utiliza un localizador y hay que presionar q dejar de fumar o que sólo se sentará allí para siempre. ¿Hay alguna forma de codificar el comando quit en bash? Traté de hacer eco de q, sin suerte. (Vi otro post aquí que sugería echo "q">/dev/console - pero no hay ninguna consola dev en mi entorno)

sistema: win7 caja - emulando fiesta con MinGW (1.7.6.msysget.0)

ACTUALIZACIÓN

aquí está el guión terminado

#!/bin/sh 
while true; 
do 
    clear 
    git log \ 
    --graph \ 
    --all \ 
    --color \ 
    --date=short \ 
    -40 \ 
    --pretty=format:"%C(yellow)%h%x20%C(white)%cd%C(green)%d%C(reset)%x20%s%x20%C(bold)(%an)%Creset" | 
    cat - 
    sleep 15 
done 

el -40 es un gusto personal. cámbielo a cualquier número que se adapte a usted y al tamaño de su pantalla de terminal.

Respuesta

4

Prueba el siguiente código:

git log \ 
    --graph -10 \ 
    --all \ 
    --color \ 
    --date=short \ 
    --pretty=format:"%Cred%x09%h %Creset%ad%Cblue%d %Creset %s %C(bold)(%an)%Creset" | 
    cat - 

edición

| cat - no es específico de Git , eso funciona en cada uno de ustedes casos sí cuando tienen un buscapersonas y que te gustaría imprimir a STDOUT

+0

Explicaciones adicionales sobre '| cat -' –

+0

¡increíble! ese es el boleto! pero no entiendo por qué ¿Qué está haciendo exactamente "cat -"? y ¿por qué está anulando el buscapersonas? – xero

+1

Obliga a 'STDOUT' a pasar por' cat' –

1

ajuste, en el script:

export PAGER= 

que hacer el truco

+0

me cansé después de la línea shebang y en el ciclo while, sin suerte. de hecho, parece que no tiene ningún efecto. Me cansé de ponerlo a nada, menos, más, y askodjaskdlj (lo que debería causar un error, supongo) pero no obtengo nada diferente en mis resultados. – xero

21

Añadiendo --no-localizador es el camino a seguir .:

git --no-pager log 

Así sería el comando completo

git --no-pager log --graph -10 --all --color --date=short --pretty=format:"%Cred%x09%h %Creset%ad%Cblue%d %Creset %s %C(bold)(%an)%Creset" 
+1

bien, eso es un comienzo. No había oído hablar de la bandera --no-pager. pero intenta llamar a ese comando. el formateo ha desaparecido por completo, y hay (supongo) caracteres de escape en la salida. salida completamente inútil * [31m \t 4c29b0d [m2012-10-01 [34m (HEAD) [m actualizado test.php [1m (xero)] [m – xero

+0

funciona bien en mi caja de Windows 7. ¿Tiene algo enredado en su configuración de terminal, supongo? Lo estoy usando con un símbolo del sistema, no a través de mingw. – eis

+0

tuvo que confirmar - funciona también sin problemas con cygwin bash + otros entornos. Sin embargo, ninguna experiencia con mingw. – eis

Cuestiones relacionadas