Git-diff 转换为 HTML
3 个回答
1
我为我的 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 = ' '
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])
可以看看这个实现。
1
也许 difr 正是你在寻找的东西。它可以接受任何类型的 git 风格的差异(也就是代码的变化)作为输入,然后生成一个 HTML 格式的版本,看起来和 GitHub 上的差不多。(而且它还内置了一个编辑器,可以添加一些小评论。这可能比你最初要求的功能多一点,但我觉得这并不会妨碍使用。)
10
你可以使用 pygments 这个命令行工具来生成带有语法高亮的HTML输出。
安装方法:
$ easy_install Pygments
示例:
$ 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
或者更简短的方式:
$ git diff | pygmentize -f html -O full,style=emacs -l diff
附注:要查看所有可用的样式,可以试试:
$ pygmentize -L styles
补充说明:为了让整个流程更完整,你可以使用这个 小技巧:
$ git diff | pygmentize -f html -O full,style=emacs -l diff | browser