Como faço para alterar o formato diff gitweb padrão para `--color-words`?
Pergunta
Eu quero gitweb para a saída do mesmo formato diff como git diff --color-words
. Alguém sabe como posso fazer isso? Olhei para HTML :: FromANSI, mas não conseguiu fazê-lo funcionar com git diff --color-words
a partir da linha de comando.
Solução
Como você usar HTML :: FromANSI ? Porque ele trabalha para mim, usando o seguinte comando funcionou conforme o esperado
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
Embora se você quiser produção utilizável, e texto branco não apenas visível no fundo preto, você provavelmente precisará configurar HTML :: FromANSI. O scriptlet acima é apenas código de prova de conceito (não ans no melhor estilo).
BTW eu não estou certo sobre a qualidade de HTML :: FromANSI módulo; não instalar (usando cpan
) para mim sem força (mas pode ser problema com Term :: VT102 :: Boundless este módulo requer).
ansi2html
sub-rotina tem problemas com algumas linhas (eu acho linhas com caráter incorporado / fuga de fim-de-linha, e vazio linha / string), produzindo aviso Use of uninitialized value in concatenation (.) or string at .../HTML/FromANSI.pm line 353, <STDIN> line NN.
. É por isso que tive de linhas chomp
(e que poderia ser o problema que você teve com tornando HTML :: FromANSI trabalho) .
Além disso, o HTML produzido por este módulo é bastante horrível, usando tag <font face='...' style ='...'>
ultrapassada e obsoleta juntamente com tag <span style='...'>
moderna; também não vejo uma opção para usar CSS em vez de estilo em linha.