Coloured Git diff to HTML

Viewed 44034

I enjoy using git diff --color-words to clearly see the words that have changed in a file:

Screenshot

However I want to share that diff with someone without git or a colour terminal for that matter. So does anyone know of a tool or trick that can convert colour escaped terminal output into HTML?

9 Answers
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

What I really needed was an ANSI to HTML converter. And I found a very decent one on http://www.pixelbeat.org/.

NOTE: You might not see any coloration unless you include --color or --color-words, probably because piping causes git diff to exclude colors.

NOTE 2: You may need to install gnu sed and awk, especially if you're on a Mac. Do so with brew install gnu-sed gawk. You may need to add them to your path manually, too, e.g. with ln -s /usr/local/Cellar/gnu-sed/4.2.2/bin/gsed /usr/local/bin/.

download diff2html, extract it and convert diff to html with this command:

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

There is more ... take a look at this question.

Or after gitting:

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

download both ansifilter from this location. and use this command to convert myfile to html format

ansifilter -i myfile -H -o myfile2.html

so ... this is exactly what you want ;)

I just found aha in debian repositories; it's trivial:

git diff --color | aha > white.html          # white background
git diff --color | aha --black > black.html  # black background
git diff --color | aha --pink > pink.html    # pink background

Its tiny download size (<20KB) got me curious, so I peeked at its source: it is a self-contained C file with only 4 includes: errno.h, stdlib.h, stdio.h and string.h, and depends on only libc. Beauty!

Don't know any tool to do exactly what you want. But here's a piece of code I often use to output html formatted colored diff: simplediff

It's available in PHP and Python. The output tags the differences using <del> and <ins> tags so you can easily color them using CSS.

Related