Как изменить формат diff по умолчанию в Gitweb на `--color-words`? - PullRequest
2 голосов
/ 05 октября 2009

Я хочу, чтобы gitweb выводил тот же формат различий, что и git diff --color-words. Кто-нибудь знает, как я могу это сделать? Я посмотрел на HTML :: FromANSI, но не смог заставить его работать с git diff --color-words из командной строки.

1 Ответ

2 голосов
/ 05 октября 2009

Как вы использовали 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. Приведенный выше скриптлет является всего лишь доказательством концептуального кода (и не в лучшем стиле).


Кстати, я не уверен в качестве 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 вместо встроенного стиля.

...