2010-01-06 11 views
56

mi piace utilizzare git diff --color-words di vedere chiaramente le parole che hanno cambiato in un file:colorato Git diff in HTML

Screenshot

Tuttavia voglio condividere che diff con qualcuno senza git o un terminale a colori per questo importa. Qualcuno sa di uno strumento o un trucco in grado di convertire l'output del terminale di colore in escape con lo in HTML?

risposta

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 

Quello che ho veramente bisogno era un ANSI al convertitore HTML. E ho trovato uno molto decente su http://www.pixelbeat.org/.

NOTA: è possibile che non venga visualizzata alcuna colorazione a meno che non si includa --color o --color-words, probabilmente perché le tubature fanno sì che git diff escluda i colori.

NOTA 2: potrebbe essere necessario installare gnu sed e awk, soprattutto se si è su un Mac. Fallo così con brew install gnu-sed gawk. Potrebbe essere necessario aggiungerli manualmente al percorso, ad es. con ln -s /usr/local/Cellar/gnu-sed/4.2.2/bin/gsed /usr/local/bin/.

+9

Sono contento che ti piaccia :) Puoi vedere alcuni esempi di utilizzo qui: http://www.pixelbeat.org/docs/terminal_colours/ – pixelbeat

+0

Altre due domande duplicate, risolte con "usa il modulo HTML :: FromANSI Perl su 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-formattazione-color-codes-to-html –

+1

Ho cercato, per giorni, qualcosa di simile per generare differenziali LaTex automatici. Questa è la mia migliore scoperta della settimana. Grazie! – Winterstream

3

Non conosco nessuno strumento per fare esattamente quello che vuoi. Ma ecco un pezzo di codice che uso spesso per l'output di un formato colorato in html: simplediff

È disponibile in PHP e Python. L'output etichetta le differenze utilizzando i tag <del> e <ins> in modo da poterli colorare facilmente tramite CSS.

+0

È un peccato che non ci sia un semplice wrapper attorno a diff semplici per rendere diffs colorati (sia html che in terminale). –

11

scaricare diff2html, estrarlo e convertire diff per HTML con questo comando:

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

C'è di più ... dare un'occhiata a this domanda.

O dopo gitting:

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

scaricare sia ansifilter da this posizione. e utilizzare questo comando per convertire myfile in formato HTML

ansifilter -i myfile -H -o myfile2.html 

così ... questo è esattamente ciò che si vuole;)

+3

http://www.flickr.com/photos/hendry/4250699527/ Non accetto 'diff2html' perché sembra AWFUL. – hendry

+0

che dire di questo -> http://kafka.fr.free.fr/diff2html/diff-demo2.html –

+0

Anche quello sembra terribile. Voglio che assomigli al mio screenshot del terminale qui sopra. – hendry

2

Se volete vedere diff pulite con linea somiglianza corrispondenza, migliore comparabilità parola, evidenziazione della sintassi e più controllare diff2html che è molto personalizzabile git diff al presentatore HTML.

Per utilizzarlo sulla riga di comando è possibile controllare diff2html-cli che è una semplice CLI scritta in Node.js.

Così puoi condividere i tuoi diff con i colleghi che si integra con diffy.org.

Controllare un campione diff here.

+0

Grazie, è un ottimo strumento. Sarebbe bello se venisse aggiunto il supporto per le differenze fatte sotto Windows (dopo le linee --- e +++ i percorsi sono quotati). – Zsolti

1

Si consiglia di eseguire il checkout del progetto github rmed, che fornisce uno strumento da riga di comando, che genera variabili html condivisibili e condivisibili utilizzando vimdiff.

0

quando uso git bash, se si utilizza git show è sufficiente copiare e incollare ciò che viene visualizzato nella console e copia correttamente i colori.