Как изменить формат различий по умолчанию в Gitweb на --color-words?
Вопрос
Я хочу, чтобы gitweb выводил тот же формат различий, что и git diff --color-words
.Кто-нибудь знает, как я могу это сделать?Я посмотрел HTML::FromANSI, но не смог заставить его работать. git diff --color-words
из командной строки.
Решение
Как ты использовал 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 вместо встроенного стиля.