about summary refs log tree commit homepage
path: root/lib/PublicInbox/RepoGitLog.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/RepoGitLog.pm')
-rw-r--r--lib/PublicInbox/RepoGitLog.pm27
1 files changed, 16 insertions, 11 deletions
diff --git a/lib/PublicInbox/RepoGitLog.pm b/lib/PublicInbox/RepoGitLog.pm
index 9cfa526e..09409edd 100644
--- a/lib/PublicInbox/RepoGitLog.pm
+++ b/lib/PublicInbox/RepoGitLog.pm
@@ -27,18 +27,18 @@ sub parent_links {
 
 sub flush_log_hdr ($$$) {
         my ($req, $dst, $hdr) = @_;
-        my $rel = $req->{relcmd};
+        my $lpfx = $req->{lpfx};
         my $seen = $req->{seen};
         $$dst .= '<hr /><pre>' if scalar keys %$seen;
         my $id = $hdr->{h};
         $seen->{$id} = 1;
         $$dst .= qq(<a\nid=p$id\n);
-        $$dst .= qq(href="${rel}commit?id=$id"><b>);
+        $$dst .= qq(href="${lpfx}commit/$id"><b>);
         $$dst .= utf8_html($hdr->{'s'}); # FIXME may still OOM
         $$dst .= '</b></a>';
         my $D = $hdr->{D}; # FIXME: thousands of decorations may OOM us
         if ($D ne '') {
-                $$dst .= ' (' . join(', ', git_dec_links($rel, $D)) . ')';
+                $$dst .= ' (' . join(', ', git_dec_links($lpfx, $D)) . ')';
         }
         my @p = split(/ /, $hdr->{p});
         push @{$req->{parents}}, @p;
@@ -56,14 +56,14 @@ sub git_log_sed_end ($$) {
         my $np = 0;
         my $seen = $req->{seen};
         my $git = $req->{repo_info}->{git};
-        my $rel = $req->{relcmd};
+        my $lpfx = $req->{lpfx};
         foreach my $p (@{$req->{parents}}) {
                 next if $seen->{$p};
                 $seen->{$p} = ++$np;
                 my $s = git_commit_title($git, $p);
-                $m .= qq(\n<a\nid=p$p\nhref="?h=$p">$p</a>\t);
+                $m .= qq(\n<a\nid=p$p\nhref="$p">$p</a>\t);
                 $s = defined($s) ? utf8_html($s) : '';
-                $m .= qq(<a\nhref="${rel}commit?id=$p">$s</a>);
+                $m .= qq(<a\nhref="${lpfx}commit/$p">$s</a>);
         }
         if ($np == 0) {
                 $$dst .= "No commits follow";
@@ -123,17 +123,22 @@ sub call_git_log {
         my ($self, $req) = @_;
         my $repo_info = $req->{repo_info};
         my $max = $repo_info->{max_commit_count} || 50;
+        my $h = $req->{h};
         $max = int($max);
         $max = 50 if $max == 0;
         my $env = $req->{env};
-        my $q = $req->{'q'} = PublicInbox::RepoGitQuery->new($env);
-        my $h = $q->{h};
-        $h eq '' and $h = 'HEAD';
         my $git = $repo_info->{git};
         my $cmd = $git->cmd(qw(log --no-notes --no-color --abbrev-commit),
-                                $git->abbrev, $LOG_FMT, "-$max", $h, '--');
+                                $git->abbrev, $LOG_FMT, "-$max",
+                                $req->{-tip}, '--');
         my $rdr = { 2 => $git->err_begin };
-        my $title = "log: $repo_info->{repo} (" . utf8_html($h). ')';
+        my $title = "log: $repo_info->{repo}";
+        if (defined $h) {
+                $title .= ' ('. utf8_html($h). ')';
+                $req->{lpfx} = $req->{relcmd};
+        } else {
+                $req->{lpfx} = $req->{relcmd}.$req->{-tip};
+        }
         $req->{lhtml} = $self->html_start($req, $title) . "\n\n";
         my $qsp = PublicInbox::Qspawn->new($cmd, undef, $rdr);
         $qsp->psgi_return($env, undef, sub {