Gitweb - 最后提交者的姓名

时间:2012-07-09 11:11:02

标签: perl git cgi gitweb

我想在GitWeb项目列表中添加最后一次提交给每个项目的人的名字,而不是

14 min ago

它说像

14 min ago (Someone's Name)

我查看了gitweb.cgi并找到了写字符串的位置(我的第5488行),但我真的不知道如何继续。

有没有人这样做过?或者任何人都可以提供快速解决方案吗?

1 个答案:

答案 0 :(得分:2)

感谢simbabque指点我git_get_last_activity。我的解决方案(可能是次优的,让我知道是否):

git_get_last_activity更改为

sub git_get_last_activity {
my ($path) = @_;
my $fd;

$git_dir = "$projectroot/$path";
open($fd, "-|", git_cmd(), 'for-each-ref',
     '--format=%(committer)',
     '--sort=-committerdate',
     '--count=1',
     'refs/heads') or return;
my $most_recent = <$fd>;
close $fd or return;
if (defined $most_recent &&
    $most_recent =~ / (\d+) [-+][01]\d\d\d$/) {
  my $bracket_position = rindex($most_recent, "<");
  my $committer_name = substr($most_recent, 0, $bracket_position - 1);
    my $timestamp = $1;
    my $age = time - $timestamp;
    return ($age, age_string($age), $committer_name);
}
return (undef, undef, undef);
}

然后搜索稍后调用的位置(应该只有一次)并更改

($pr->{'age'}, $pr->{'age_string'}) = @activity;

($pr->{'age'}, $pr->{'age_string'}, $pr->{'committer'}) = @activity;

然后转到git_project_list_rows并更改

(defined $pr->{'age_string'} ? $pr->{'age_string'} : "No commits") . "</td>\n" .

(defined $pr->{'age_string'} ? $pr->{'age_string'} . ' (' . $pr->{'committer'} . ')' : "No commits") . "</td>\n" .