2010-01-13 4 views
5

Je cherche un moyen de produire des fichiers HTML à partir d'une sortie git-diff, de préférence en utilisant python. J'ai regardé http://docs.python.org/library/difflib.html sans être capable de comprendre comment utiliser la sortie git-diff comme une entrée.Git-diff au HTML

Une idée?

Un grand merci

+3

Très similaire à http://stackoverflow.com/questions/2013091/coloured-diff-to-html - Peut être utile pour vous. –

Répondre

8

Vous pouvez utiliser le script pygments de ligne de commande pour obtenir une syntaxe HTML RESSORTENT sortie.

Installation:

$ easy_install Pygments 

Exemple:

$ 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 

ou moins:

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

post-scriptum Pour voir tous les styles disponibles, essayez:

$ pygmentize -L styles 

P.P.S. Pour le pipeline complet, vous pouvez utiliser ce trick:

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

Merci, mais ce n'est pas exactement ce que je cherche. Je suis désolé ma question n'était pas assez claire, et peut-être que c'est quelque chose à regarder, mais j'ai peur que pygment se limite à la coloration syntaxique. Les sorties diff habituelles utilisent "ascii" pour montrer graphiquement les différences entre deux fichiers, ce qui veut dire montrer ces différences graphiquement, soit en affichant les deux fichiers côte à côte (comme wikipedia) ou en utilisant par exemple des attributs css comme 'overline' pour montrer les morceaux supprimés. –

1

Peut-être difr est vous ce que vous cherchez. Il prend n'importe quel type de git diff comme une entrée et produit une version HTML qui est assez semblable à ce que GitHub vous donnerait. (Et il intègre un éditeur pour ajouter quelques petits commentaires. Cela pourrait être un peu plus que ce que vous avez demandé, mais je ne pense pas qu'il est dans la manière.)

https://github.com/wspringer/difr

1

j'ai écrit simple mise en œuvre pour mon 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]) 

jetez un coup d'oeil.