diff to html(diff2html)程序

61

我正在寻找一款“将diff转换为html”的程序,它可以从给定的diff/patch文件生成静态html页面。

我当然已经谷歌搜索过了,但除了一些脚本外,没有什么“真正的项目”(例如,在Debian/Ubuntu中没有软件包)。

我有遗漏什么吗?你能推荐一些东西吗?


1
https://diff2html.xyz/ 看起来可以回答你的问题(如果有其他人在寻找)。 - scp
10个回答

28

您可以使用diff2html.py。该工具能够从一个统一的diff输入中创建一个静态html页面并显示并排的差异。该脚本是用Python编写的。

cat foo.diff | python diff2html.py > foo.html

diff2html.py 无法生成干净的 XHTML,如果您需要将其作为 XML 处理,则会遇到困难。 - Gerrit Griebel

25

Pygments 支持 diff 语法高亮以及许多其他编程语言的语法高亮,可以作为库或命令行程序使用。这符合您要求的吗?如果不是,请澄清问题...


2
Pygments很酷,可惜它们不支持并排差异渲染。 - icco
13
对我很有用:diff -U9999999 -y file_before.php file_after.php | pygmentize -l diff -f html -O full -o file_diff.html (这是一条命令,可以将两个文件进行比较,并通过pygmentize将差异以HTML格式输出到file_diff.html文件中) - jwhitlock
1
@jwhitlock 太棒了!非常感谢。我不得不选择 -u 而不是 -y(并排显示),否则 diff 会抱怨“冲突的输出样式选项”。 - Christophe Muller

19

类似以下内容:

vim test.diff -c TOhtml -c ":saveas test.html" -c ":q" -c ":q"

这很有效,你可以通过在vi中更改配色方案来更改差异的颜色方案。


谢谢您提到 TOhtml!效果非常好! - Max Ch
1
它也适用于vimdiff! - BartBiczBoży
对于那些想要使用vimdiff输出的人,请尝试以下操作:vimdiff $PREV $NEW -c TOhtml -c ":saveas $OUT" -c ':q!' -c ':q!' -c ':q!' - Richard Wheeldon
我按照建议将其导出为HTML,但输出(.html)没有美化?有什么建议@daniel-zinn如何使其工作? - Felix Aballi

10

1
工具从标准输入读取diff输出。但是:它还需要在命令行上同时指定两个文件:"将diff的标准输出通过管道传递给/home/fapgg/diff2html的标准输入(稍微快一些):diff file1 file2 | /home/fapgg/diff2html [options] file1 file2",也就是说,它不能用于现有的diff/patch文件。 - Gerrit Griebel
作为 NPM 模块 diff2html - Gagan
diff2html现在托管在GitHub上。 - Gagan

8

3
这3个工具似乎能够生成差异文件。我认为原问题是在询问如何美化已经生成的差异文件。 - jarjar
在线版本请查看http://changedetection.com/ 和 http://imnosy.com/。 - onassar

6
你尝试过http://prettydiff.com/吗?它忽略空格和注释的差异。
[免责声明:这是我的网站]

5

在Vim中还有一个名为2html的功能,它非常好用,并且是内置的。它可以将Vim能够高亮语法的文件转换为具有正确格式的HTML文件。

使用方法很简单,只需在Vim中打开想要转换的文件,然后执行2html脚本即可。它会在新的缓冲区中打开转换后的文件,你可以保存它。这里:

vim example.diff

然后在Vim中,

:so /usr/share/vim/vim72/syntax/2html.vim
:wqa

5

3
我发现coderev,演示看起来不错。

3

我在Emacs中使用htmlize。它不是Emacs自带的,需要你使用Emacs。它依赖于Emacs的Diff模式语法高亮。只能一次处理一个文件。对我来说做了正确的事情


1
一旦您使用M-x package-install htmlize(在emacs中)安装它,您可以简单地调用emacs作为“emacs --file fms-src-77-to-78.diff -f htmlize-file -f kill-emacs”(尽管这仍然需要您按一次回车键)。 - Arne Babenhauserheide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接