Add new optional field usershort to rcs_recentchanges.

Now the git plugin supports commits with author fields that look like:
Author: http://my.openid/ <me@web>

Then in recentchanges, the short username will be displayed, linking
to the openid.

Particularly useful for the horrible google openids, of course.
master
Joey Hess 2010-06-23 15:32:27 -04:00
parent 0580cbbf40
commit c46bcb425a
4 changed files with 21 additions and 7 deletions

View File

@ -342,8 +342,9 @@ sub parse_diff_tree ($) {
$ci{ "${who}_epoch" } = $epoch; $ci{ "${who}_epoch" } = $epoch;
$ci{ "${who}_tz" } = $tz; $ci{ "${who}_tz" } = $tz;
if ($name =~ m/^[^<]+\s+<([^@>]+)/) { if ($name =~ m/^([^<]+)\s+<([^@>]+)/) {
$ci{"${who}_username"} = $1; $ci{"${who}_name"} = $1;
$ci{"${who}_username"} = $2;
} }
elsif ($name =~ m/^([^<]+)\s+<>$/) { elsif ($name =~ m/^([^<]+)\s+<>$/) {
$ci{"${who}_username"} = $1; $ci{"${who}_username"} = $1;
@ -588,9 +589,14 @@ sub rcs_recentchanges ($) {
push @messages, { line => $line }; push @messages, { line => $line };
} }
my $user=$ci->{'author_username'}; my $user=$ci->{'author_name'};
my $usershort=$ci->{'author_username'};
my $web_commit = ($ci->{'author'} =~ /\@web>/); my $web_commit = ($ci->{'author'} =~ /\@web>/);
if ($usershort =~ /:\/\//) {
$usershort=undef; # url; not really short
}
# compatability code for old web commit messages # compatability code for old web commit messages
if (! $web_commit && if (! $web_commit &&
defined $messages[0] && defined $messages[0] &&
@ -603,6 +609,7 @@ sub rcs_recentchanges ($) {
push @rets, { push @rets, {
rev => $sha1, rev => $sha1,
user => $user, user => $user,
usershort => $usershort,
committype => $web_commit ? "web" : "git", committype => $web_commit ? "web" : "git",
when => $when, when => $when,
message => [@messages], message => [@messages],

View File

@ -114,12 +114,11 @@ sub store ($$$) {
]; ];
push @{$change->{pages}}, { link => '...' } if $is_excess; push @{$change->{pages}}, { link => '...' } if $is_excess;
# See if the committer is an openid.
$change->{author}=$change->{user}; $change->{author}=$change->{user};
my $oiduser=eval { IkiWiki::openiduser($change->{user}) }; my $oiduser=eval { IkiWiki::openiduser($change->{user}) };
if (defined $oiduser) { if (defined $oiduser) {
$change->{authorurl}=$change->{user}; $change->{authorurl}=$change->{user};
$change->{user}=$oiduser; $change->{user}=defined $change->{usershort} ? $change->{usershort} : $oiduser;
} }
elsif (length $config{cgiurl}) { elsif (length $config{cgiurl}) {
$change->{authorurl} = IkiWiki::cgiurl( $change->{authorurl} = IkiWiki::cgiurl(

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
ikiwiki (3.20100624) UNRELEASED; urgency=low
* Add new optional field usershort to rcs_recentchanges.
-- Joey Hess <joeyh@debian.org> Wed, 23 Jun 2010 15:30:04 -0400
ikiwiki (3.20100623) unstable; urgency=low ikiwiki (3.20100623) unstable; urgency=low
* openid: Add openid_realm and openid_cgiurl configuration options, * openid: Add openid_realm and openid_cgiurl configuration options,

View File

@ -1103,7 +1103,9 @@ The data structure returned for each change is:
{ {
rev => # the RCSs id for this commit rev => # the RCSs id for this commit
user => # name of user who made the change, user => # user who made the change (may be an openid),
usershort => # short name of user (optional; not an openid),
committype => # either "web" or the name of the rcs, committype => # either "web" or the name of the rcs,
when => # time when the change was made, when => # time when the change was made,
message => [ message => [