lib/PublicInbox/WwwListing.pm | 14 +++++++++++--- t/www_listing.t | 7 ++++++- diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm index e052bbffa938ec04f0946c09b109b7df903855e3..1d4029f047ed35a738ed7c75854d374f23ba93c2 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -138,8 +138,8 @@ return if $?; # empty, uninitialized git repo $dig->hexdigest; } -sub manifest_add ($$;$) { - my ($manifest, $ibx, $epoch) = @_; +sub manifest_add ($$;$$) { + my ($manifest, $ibx, $epoch, $default_desc) = @_; my $url_path = "/$ibx->{name}"; my $git_dir = $ibx->{mainrepo}; if (defined $epoch) { @@ -154,6 +154,13 @@ chomp(my $owner = $git->qx('config', 'gitweb.owner')); chomp(my $desc = try_cat("$git_dir/description")); $owner = undef if $owner eq ''; $desc = 'Unnamed repository' if $desc eq ''; + + # templates/hooks--update.sample and git-multimail in git.git + # only match "Unnamed repository", not the full contents of + # templates/this--description in git.git + if ($desc =~ /\AUnnamed repository/) { + $desc = "$default_desc [epoch $epoch]" if defined($epoch); + } my $reference; chomp(my $alt = try_cat("$git_dir/objects/info/alternates")); @@ -191,8 +198,9 @@ my $manifest = { -abs2urlpath => {}, -mtime => 0 }; for my $ibx (@$list) { if (defined(my $max = $ibx->max_git_epoch)) { + my $desc = $ibx->description; for my $epoch (0..$max) { - manifest_add($manifest, $ibx, $epoch); + manifest_add($manifest, $ibx, $epoch, $desc); } } else { manifest_add($manifest, $ibx); diff --git a/t/www_listing.t b/t/www_listing.t index d82a4a4a581345425d06a03bdfbc786a8c44c2c5..e5b797db7f9582c954702ac69d008fa4c453ae8a 100644 --- a/t/www_listing.t +++ b/t/www_listing.t @@ -55,7 +55,12 @@ is(HTTP::Date::time2str($bare->{modified}), $res->{headers}->{'last-modified'}, 'modified field and Last-Modified header match'); - ok($manifest->{'/v2/git/0.git'}, 'v2 epoch appeared'); + ok(my $v2epoch0 = $manifest->{'/v2/git/0.git'}, 'v2 epoch 0 appeared'); + like($v2epoch0->{description}, qr/ \[epoch 0\]\z/, + 'epoch 0 in description'); + ok(my $v2epoch1 = $manifest->{'/v2/git/1.git'}, 'v2 epoch 1 appeared'); + like($v2epoch1->{description}, qr/ \[epoch 1\]\z/, + 'epoch 1 in description'); } my $pid;