Histoire d'avoir des sources joliment affichés dans un objectif d'être plus lisibles, j'ai effectué les modifications suivante par rapport à une installation standard de gitweb :
installation des paquets source-highlight et recode
ajout de la ligne suivante dans /usr/share/source-highlight/outlang,map :
html-raw = html-raw.outlang
création du fichier /usr/share/source-highlight/html-raw.outlang avec le contenu suivant :
include "html_common.outlang" doctemplate "" "" end
modification de /usr/lib/cgi-bin/gitweb.cgi selon le diff unifié suivant :
1 --- gitweb.cgi.orig 2008-09-08 03:21:20.000000000 -0400 2 +++ gitweb.cgi 2008-10-23 18:35:44.000000000 -0400 3 @@ -3143,7 +3143,7 @@ 4 } 5 6 my ($have_blame) = gitweb_check_feature('blame'); 7 - open my $fd, "-|", git_cmd(), "cat-file", "blob", $hash 8 + open my $fd, "-|", "/usr/local/lib/gitweb-cat-file", "--git-dir=".$git_dir, "blob", $hash 9 or die_error(undef, "Couldn't cat $file_name, $hash"); 10 my $mimetype = blob_mimetype($fd, $file_name); 11 if ($mimetype !~ m/^text\//) { 12 @@ -3187,13 +3187,15 @@ 13 git_print_page_path($file_name, "blob", $hash_base); 14 print "<div class=\"page_body\">\n"; 15 my $nr; 16 + binmode STDOUT, ':raw'; 17 while (my $line = <$fd>) { 18 chomp $line; 19 $nr++; 20 $line = untabify($line); 21 printf "<div class=\"pre\"><a id=\"l%i\" href=\"#l%i\" class=\"linenr\">%4i</a> %s</div>\n", 22 - $nr, $nr, $nr, esc_html($line, -nbsp=>1); 23 + $nr, $nr, $nr, $line; 24 } 25 + binmode STDOUT, ':utf8'; 26 close $fd 27 or print "Reading blob failed.\n"; 28 print "</div>";
création du fichier exécutable /usr/local/lib/gitweb-cat-file avec le contenu suivant :
#!/bin/sh # gitweb-cat-file, by Progfou, Oct.2008 # Depends: source-highlight recode export LANG="fr_FR.UTF-8" TEMPFILE=`tempfile` GITDIR=$1 ; shift /usr/bin/git $GITDIR cat-file "$@" >$TEMPFILE FIRSTLINE="`head -1 $TEMPFILE`" case $FIRSTLINE in *python*) COMMAND="source-highlight -f html-raw -s python" ;; *perl*) COMMAND="source-highlight -f html-raw -s perl" ;; "<?xml"*) COMMAND="source-highlight -f html-raw -s xml" ;; "<html"*) COMMAND="source-highlight -f html-raw -s html" ;; "<HTML"*) COMMAND="source-highlight -f html-raw -s html" ;; *sh) COMMAND="source-highlight -f html-raw -s shell" ;; *) COMMAND="recode ..html" ;; esac $COMMAND < $TEMPFILE rm -f $TEMPFILE