use Email::MIME;
use Date::Parse qw(strptime);
use PublicInbox::Hval;
-use PublicInbox::GitCatFile;
+use PublicInbox::Git;
use PublicInbox::View;
use PublicInbox::MID qw/mid_clean mid2path/;
use POSIX qw/strftime/;
my $max = $ctx->{max} || MAX_PER_PAGE;
my $feed_opts = get_feedopts($ctx);
my $x = atom_header($feed_opts);
- my $git = PublicInbox::GitCatFile->new($ctx->{git_dir});
+ my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir});
each_recent_blob($ctx, sub {
my ($path, undef, $ts) = @_;
if (defined $x) {
}
add_to_feed($feed_opts, $fh, $path, $git);
});
- $git = undef; # destroy pipes
end_feed($fh);
}
$feed_opts->{url} = $html_url;
$feed_opts->{emit_header} = 1;
- my $git = PublicInbox::GitCatFile->new($ctx->{git_dir});
+ my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir});
foreach my $msg (@{$res->{msgs}}) {
add_to_feed($feed_opts, $fh, mid2path($msg->mid), $git);
}
- $git = undef; # destroy pipes
end_feed($fh);
}
my $top = "<b>$title</b> (<a\nhref=\"$atom_url\">Atom feed</a>)";
if ($srch) {
- $top = qq{<form\naction=""><tt>$top} .
+ $top = qq{<form\naction=""><pre>$top} .
qq{ <input\nname=q\ntype=text />} .
qq{<input\ntype=submit\nvalue=search />} .
- qq{</tt></form>} .
- PublicInbox::Hval::PRE;
+ q{</pre></form><pre>}
} else {
- $top = PublicInbox::Hval::PRE . $top . "\n";
+ $top = '<pre>' . $top . "\n";
}
$fh->write("<html><head><title>$title</title>" .
"<link\nrel=alternate\ntitle=\"Atom feed\"\n".
"href=\"$atom_url\"\ntype=\"application/atom+xml\"/>" .
+ PublicInbox::Hval::STYLE .
"</head><body>$top");
# if the 'r' query parameter is given, it is a legacy permalink
sub emit_index_nosrch {
my ($ctx, $state, $fh) = @_;
- my $git = PublicInbox::GitCatFile->new($ctx->{git_dir});
+ my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir});
my (undef, $last) = each_recent_blob($ctx, sub {
my ($path, $commit, $ts, $u, $subj) = @_;
$state->{first} ||= $commit;
$head = $cgi->path_info;
$head = qq!<a\nhref="$head">head</a>!;
}
- my $atom = "<a\nhref=\"$feed_opts->{atomurl}\">Atom</a>";
+ my $atom = "<a\nhref=\"$feed_opts->{atomurl}\">Atom feed</a>";
"<a\nname=\"s$anchor\">page:</a> $next $head $atom";
}
# get recent messages
# we could use git log -z, but, we already know ssoma will not
# leave us with filenames with spaces in them..
- my @cmd = ('git', "--git-dir=$ctx->{git_dir}",
- qw/log --no-notes --no-color --raw -r
- --abbrev=16 --abbrev-commit/,
- "--format=%h%x00%ct%x00%an%x00%s%x00");
- push @cmd, $range;
-
- my $pid = open(my $log, '-|', @cmd) or
- die('open `'.join(' ', @cmd) . " pipe failed: $!\n");
+ my $git = $ctx->{git} ||= PublicInbox::Git->new($ctx->{git_dir});
+ my $log = $git->popen(qw/log --no-notes --no-color --raw -r
+ --abbrev=16 --abbrev-commit/,
+ "--format=%h%x00%ct%x00%an%x00%s%x00",
+ $range);
my %deleted; # only an optimization at this point
my $last;
my $nr = 0;
my $base;
if (ref($cgi) eq 'CGI') {
$base = $cgi->url(-base);
- } else {
+ } else { # Plack::Request
$base = $cgi->base->as_string;
$base =~ s!/\z!!;
}