Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Git差异到HTML_Python_Html_Git_Diff - Fatal编程技术网

Python Git差异到HTML

Python Git差异到HTML,python,html,git,diff,Python,Html,Git,Diff,我正在寻找一种从git diff输出生成HTML文件的方法,最好使用python。我一直在研究如何使用git diff输出作为输入 有线索吗 非常感谢您可以使用命令行脚本获得语法高度灵活的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 $ # ma

我正在寻找一种从git diff输出生成HTML文件的方法,最好使用python。我一直在研究如何使用git diff输出作为输入

有线索吗

非常感谢

您可以使用命令行脚本获得语法高度灵活的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
p.p.S.要使管道完整,您可以使用以下方法:

也许你就是你要找的人。它将任何类型的git样式的diff作为输入,并生成一个HTML版本,它与GitHub提供给您的非常相似。(它还嵌入了一个编辑器,用于添加一些小评论。这可能比您要求的要多一点,但我认为这不会妨碍您的工作。)


我为我的

def getHtml(diffData):
“”“此方法将git diff数据转换为html颜色代码
"""
openTag=“”
nbsp=“”
返回“”。对于diffData中的行,join((“%s%s%s%s%s%s
”%(openTag,“#ff0000”if line.startswith(“-”)else(“#007900”if line.startswith(“+”)else“#000000”)、openTagEnd、nbsp*line.count(“\t”)、line)))

请看一看。

非常类似-可能对您有用。谢谢,但这不是我想要的。很抱歉,我的问题不够清楚,也许这确实值得一看,但我担心pygment仅限于语法突出显示。常规的差异输出使用“ascii”以图形方式显示两个文件之间的差异,我们要做的是以图形方式显示这些差异,或者通过并排显示两个文件(如wikipedia),或者例如通过使用css属性(如“overline”)来显示删除的块。
$ git diff | pygmentize -f html -O full,style=emacs -l diff | browser
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])