【问题标题】:Git-diff to HTMLGit-diff 到 HTML
【发布时间】:2011-01-04 10:47:39
【问题描述】:

我正在寻找一种从 git-diff 输出生成 HTML 文件的方法,最好使用 python。我一直在查看 http://docs.python.org/library/difflib.html 却无法弄清楚如何使用 git-diff 输出作为输入。

有什么线索吗?

非常感谢

【问题讨论】:

标签: python html git diff


【解决方案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 = '&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]) 

看看吧。

【讨论】:

    【解决方案2】:

    您可以使用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
    

    附言要使管道完整,您可以使用此trick

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

    【讨论】:

    • 谢谢,但这并不是我想要的。很抱歉我的问题不够清楚,也许确实值得一看,但恐怕 pygment 仅限于语法高亮。常规差异输出使用“ascii”以图形方式显示两个文件之间的差异,想要以图形方式显示这些差异,或者通过并排显示两个文件(如维基百科)或例如使用 css 属性,如'overline' 显示已删除的块。
    【解决方案3】:

    也许 difr 就是你想要的。它接受任何类型的 git 风格差异作为输入,并生成它的 HTML 版本,该版本与 GitHub 提供的非常相似。 (并且它嵌入了一个用于添加一些小型 cmets 的编辑器。这可能比您要求的要多一点,但我认为它不会妨碍您。)

    https://github.com/wspringer/difr

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-04
      • 2016-02-13
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 2011-12-02
      • 2012-03-28
      • 2013-03-29
      相关资源
      最近更新 更多