2010-01-06 17 views
56

me gusta usar git diff --color-words de ver con claridad las palabras que han cambiado en un archivo:color Git diff a HTML

Screenshot

Sin embargo, quiero compartir que diff con alguien sin git o un terminal de color para que importar. Entonces, ¿alguien sabe de una herramienta o truco que puede convertir salida de terminal de color escapado en HTML?

Respuesta

77
wget "http://www.pixelbeat.org/scripts/ansi2html.sh" -O /tmp/ansi2html.sh 
chmod +x /tmp/ansi2html.sh 
git diff --color-words --no-index orig.txt edited.txt | \ 
/tmp/ansi2html.sh > 2beshared.html 

Lo que realmente necesitaba era un ANSI al convertidor HTML. Y encontré uno muy decente en http://www.pixelbeat.org/.

NOTA: Es posible que no vea ninguna coloración a menos que incluya --color o --color-words, probablemente porque la tubería hace que git diff excluya los colores.

NOTA 2: Es posible que deba instalar gnu sed y awk, especialmente si está en una Mac. Hazlo con brew install gnu-sed gawk. Es posible que también deba agregarlos a su ruta manualmente, p. con ln -s /usr/local/Cellar/gnu-sed/4.2.2/bin/gsed /usr/local/bin/.

+9

Me alegra que te guste :) Puedes ver ejemplos de uso aquí: http://www.pixelbeat.org/docs/terminal_colours/ – pixelbeat

+0

Otras dos preguntas duplicadas, respondidas por "utilizar el módulo HTML :: FromANSI Perl en CPAN": http://stackoverflow.com/questions/1425738/how-can-i-convert-the-output-of-git-diff-color-words-to-html, http://stackoverflow.com/questions/245121/ a-library-to-convert-ansi-escapes-terminal-formatting-color-codes-to-html –

+1

He estado buscando, durante días, algo como esto para generar diferencias automáticas de LaTex. Este es mi mejor hallazgo de la semana. ¡Gracias! – Winterstream

3

No conoce ninguna herramienta para hacer exactamente lo que quiere. Pero aquí hay un fragmento de código que a menudo uso para generar html con formato de color diff: simplediff

Está disponible en PHP y Python. El resultado etiqueta las diferencias usando las etiquetas <del> y <ins> para que pueda colorearlas fácilmente con CSS.

+0

Es una pena que no haya un envoltorio simple alrededor de diff simple para hacer diffs de colores (ya sea html o en terminal). –

11

descarga diff2html, extraer y convertir a html diff con este comando:

$ diff2html file1.txt file2.txt > diff-demo1.htm 

Hay más ... echar un vistazo a this cuestión.

O después gitting:

git diff --color-words --no-index orig.txt /tmp/edited.txt > myfile 

descarga tanto ansifilter de this ubicación. y utilizar este comando para convertir a formato html mi_archivo

ansifilter -i myfile -H -o myfile2.html 

así que ... esto es exactamente lo que quiere;)

+3

http://www.flickr.com/photos/hendry/4250699527/ No estoy aceptando 'diff2html' porque se ve horrible. – hendry

+0

qué tal esto -> http://kafka.fr.free.fr/diff2html/diff-demo2.html –

+0

Eso también se ve horrible. Quiero que se vea como la captura de pantalla de mi terminal de arriba. – hendry

1

He creado una secuencia de comandos perl para generar la tabla html para la diferencia de git. Para utilizar este script primero, debe recopilar el diff usando git diff sha1s ...> diff.file, luego ejecute diff2html.pl diff.file. visita:

http://kernel-demystified.com/forum/index.php/topic,23.msg28.html#new

+0

'Imposible determinar la dirección IP desde el nombre de host kernel-demystified.com' – ArcherGodson

2

Si quieres ver diffs limpias con línea de similitud a juego, mejor comparación palabra, resaltado de sintaxis y más echa un vistazo a diff2html que es muy personalizable git difiera del presentador de HTML.

Para usarlo en la línea de comandos, puede marcar diff2html-cli que es una CLI simple escrita en Node.js.

Para que pueda compartir sus diferencias con los colegas que integra con diffy.org.

Consulte una muestra de diff here.

+0

Gracias, es una gran herramienta. Sería bueno si se agregara soporte para diffs hechos en Windows (después de las líneas --- y +++ las rutas son citadas). – Zsolti

1

Es posible que desee consultar el proyecto github rmed, que proporciona una herramienta de línea de comandos, que genera dift html estáticas que se pueden compartir utilizando vimdiff.

0

cuando uso git bash, si usa git show solo necesita copiar y pegar lo que se muestra en la consola y copia los colores correctamente.