The gitweb author initials feature from a36817b doesn't work with i18n names
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Aug 29, 2013, 14:26 UTC
- Message-ID
- <CACBZZX4i-Tu1G07e9=5DYFjY9EtRGO8gLJf71d5aLeaE-cj-8w@mail.gmail.com>
The @author_initials feature Jakub added in a36817b claims to use a i18n regexp (/\b([[:upper:]])\B/g), but in Perl this doesn't actually do anything unless the string being matched against has the UTF8 flag.
So as a result it abbreviates me to "AB" not "ÆAB". Here's something that demonstrates the issue:
$ cat author-initials.pl #!/usr/bin/env perl use strict; use warnings;
#binmode STDOUT, ':utf8';
open my $fd, "-|", "git", "blame", "--incremental", "--", "Makefile"
or die "Can't open: $!";
#binmode $fd, ":utf8";
while (my $line = <$fd>) {
next unless my ($author) = $line =~ /^author (.*)/;
my @author_initials = ($author =~ /\b([[:upper:]])\B/g);
printf "%s (%s)\n", join("", @author_initials), $author;
}With those two binmode commands commented out:
$ perl author-initials.pl |sort|uniq -c|sort -nr|head -n 5
99 JH (Junio C Hamano)
35 JN (Jonathan Nieder)
35 JK (Jeff King)
20 JS (Johannes Schindelin)
16 AB (Ævar Arnfjörð Bjarmason)And uncommented:
$ perl author-initials.pl |sort|uniq -c|sort -nr|head -n 5
99 JH (Junio C Hamano)
35 JN (Jonathan Nieder)
35 JK (Jeff King)
20 JS (Johannes Schindelin)
16 ÆAB (Ævar Arnfjörð Bjarmason)Jakub, do you see a reason not to just apply this:
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index f429f75..29b3fb5 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -6631,6 +6631,7 @@ sub git_blame_common { $hash_base, '--', $file_name or die_error(500, "Open git-blame --porcelain failed"); } + binmode $fd, ":utf8"; # incremental blame data returns early if ($format eq 'data') { I haven't gotten an env where I can test gitweb running, but that looks like it should work to me.