如何将Gitweb默认diff格式更改为`--color-words`?

时间:2009-10-05 03:42:19

标签: perl git diff gitweb

我希望gitweb输出与git diff --color-words相同的diff格式。有人知道我怎么做吗?我查看了HTML :: FromANSI但无法从命令行使用git diff --color-words

1 个答案:

答案 0 :(得分:2)

你是如何使用HTML::FromANSI的?因为它适用于我,使用以下命令按预期工作

git diff --color-words HEAD^ HEAD |
perl -wle '
use HTML::FromANSI; 
my @lines = <STDIN>; 
foreach my $line (@lines) {
    chomp $line;
    print ansi2html($line); 
}' > tmp.html

虽然如果你想要可用的输出,而不是黑色背景上几乎看不到的白色文本,你可能需要配置HTML :: FromANSI。上面的scriptlet只是概念代码的证明(不是最好的风格)。


BTW我不确定HTML::FromANSI模块的质量;没有强制它没有为我安装(使用cpan)(但它可能是Term :: VT102 :: Boundless这个模块需要的问题)。

ansi2html子例程在某些行上有问题(我认为具有嵌入/尾随行尾字符的行和空行/字符串),产生Use of uninitialized value in concatenation (.) or string at .../HTML/FromANSI.pm line 353, <STDIN> line NN.警告。这就是为什么我必须chomp(这可能是你使HTML :: FromANSI工作的问题)

此模块生成的HTML非常可怕,使用过时且已弃用的<font face='...' style ='...'>标记以及现代<span style='...'>标记;我也没有看到使用CSS而不是内联样式的选项。