]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Git.pm
wwwstream: drop tor2web URL
[public-inbox.git] / lib / PublicInbox / Git.pm
index 265c3fb4507a1173de3d485d6de5cf332976a335..236f70c165af6a275ab0898486cb7992700bae09 100644 (file)
@@ -288,10 +288,19 @@ sub src_blob_url {
        local_nick($self);
 }
 
+sub host_prefix_url ($$) {
+       my ($env, $url) = @_;
+       return $url if index($url, '//') >= 0;
+       my $scheme = $env->{'psgi.url_scheme'};
+       my $host_port = $env->{HTTP_HOST} ||
+               "$env->{SERVER_NAME}:$env->{SERVER_PORT}";
+       "$scheme://$host_port". ($env->{SCRIPT_NAME} || '/') . $url;
+}
+
 sub pub_urls {
-       my ($self) = @_;
+       my ($self, $env) = @_;
        if (my $urls = $self->{cgit_url}) {
-               return @$urls;
+               return map { host_prefix_url($env, $_) } @$urls;
        }
        local_nick($self);
 }
@@ -303,6 +312,24 @@ sub commit_title ($$) {
        ($$buf =~ /\r?\n\r?\n([^\r\n]+)\r?\n?/)[0]
 }
 
+# returns the modified time of a git repo, same as the "modified" field
+# of a grokmirror manifest
+sub modified ($) {
+       my ($self) = @_;
+       my $modified = 0;
+       my $fh = popen($self, qw(rev-parse --branches));
+       defined $fh or return $modified;
+       local $/ = "\n";
+       foreach my $oid (<$fh>) {
+               chomp $oid;
+               my $buf = cat_file($self, $oid) or next;
+               $$buf =~ /^committer .*?> (\d+) [\+\-]?\d+/sm or next;
+               my $cmt_time = $1;
+               $modified = $cmt_time if $cmt_time > $modified;
+       }
+       $modified || time;
+}
+
 1;
 __END__
 =pod