2010-01-13 13 views
5

Estoy buscando una forma de producir archivos HTML a partir de una salida de git-diff, preferiblemente usando python. He estado buscando en http://docs.python.org/library/difflib.html sin poder averiguar cómo usar la salida de git-diff como entrada.Git-diff a HTML

¿Alguna pista?

Muchas gracias

+3

Muy similar a http://stackoverflow.com/questions/2013091/coloured-diff-to-html - podría ser útil para usted. –

Respuesta

8

usted podría utilizar la secuencia de comandos pygments de comandos para obtener una sintaxis DESTACADAS salida HTML.

Instalación:

$ easy_install Pygments 

Ejemplo:

$ git diff HEAD^1 > last.diff 
$ pygmentize -f html -O full,style=trac -l diff -o last.diff.html last.diff 

$ # mac only 
$ open last.diff.html 

o más corto:

$ git diff | pygmentize -f html -O full,style=emacs -l diff 

P. S. Para ver todos los estilos disponibles, pruebe:

$ pygmentize -L styles 

P.P.S. Para hacer que la tubería completa, puede utilizar esta trick:

$ git diff | pygmentize -f html -O full,style=emacs -l diff | browser 
+0

Gracias, sin embargo, esto no es exactamente lo que estoy buscando. Lamento que mi pregunta no fuera lo suficientemente clara, y tal vez sea algo que mirar, pero me temo que pygment está limitado al resaltado de sintaxis. Las salidas regulares de diff usan "ascii" para mostrar gráficamente las diferencias entre dos archivos, lo que quiere hacer es mostrar esas diferencias gráficamente, ya sea mostrando los dos archivos uno al lado del otro (como wikipedia) o por ejemplo usando atributos CSS como 'sobreimpresión' para mostrar fragmentos borrados. –

1

Quizás difr que es lo que estás buscando. Toma cualquier tipo de diferencia de estilo git como entrada y produce una versión HTML de la misma que es muy similar a lo que GitHub le daría. (Y se incrusta un editor para añadir algunos comentarios pequeños. Eso podría ser un poco más de lo que pidieron, pero no creo que se interpone en el camino.)

https://github.com/wspringer/difr

1

me escribió un sencillo aplicación para mi maildiff

def getHtml(diffData): 
    """ This method convertes git diff data to html color code 
    """ 
    openTag = "<span style='font-size: .80em; color: " 
    openTagEnd = ";font-family: courier, arial, helvetica, sans-serif;'>" 
    nbsp = '&nbsp;&nbsp;&nbsp;&nbsp;' 
    return ''.join([("%s%s%s%s%s</span><br>" % (openTag, '#ff0000' if line.startswith('-') else ('#007900' if line.startswith('+') else '#000000'), openTagEnd, nbsp*line.count('\t') ,line)) for line in diffData]) 

tiene una mirada en ella.