summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ff57c4d)
WwwCoderepo is for viewing blobs already in code repositories,
so there's no place for a debug log showing which mails were
used to arrive at a given blob. The debug footer remains for
/$INBOX/$OID/s/ URLs, of course.
my ($oid, $type, $size, $ctx) = @_;
return find_missing($ctx) if $type eq 'missing';
my ($oid, $type, $size, $ctx) = @_;
return find_missing($ctx) if $type eq 'missing';
- open $ctx->{lh}, '<', \(my $dbg_log = '') or die "open(scalar): $!";
my $res = [ $ctx->{git}, $oid, $type, $size ];
my ($bn) = ($ctx->{-path} =~ m!/?([^/]+)\z!);
if ($type eq 'blob') {
my $res = [ $ctx->{git}, $oid, $type, $size ];
my ($bn) = ($ctx->{-path} =~ m!/?([^/]+)\z!);
if ($type eq 'blob') {
return '<pre>debug log seek error</pre>';
}
$log = do { local $/; <$log> } // do {
return '<pre>debug log seek error</pre>';
}
$log = do { local $/; <$log> } // do {
- warn "readline(log): $!";
- return '<pre>debug log read error</pre>';
+ if (!eof($log)) {
+ warn "readline(log): $!";
+ return '<pre>debug log read error</pre>';
+ }
+ '';
};
return '' if $log eq '';
$ctx->{-linkify} //= PublicInbox::Linkify->new;
};
return '' if $log eq '';
$ctx->{-linkify} //= PublicInbox::Linkify->new;
}
$ctx->{fn} = $fn;
$ctx->{-tmp} = File::Temp->newdir("solver.$oid_b-XXXX", TMPDIR => 1);
}
$ctx->{fn} = $fn;
$ctx->{-tmp} = File::Temp->newdir("solver.$oid_b-XXXX", TMPDIR => 1);
- open $ctx->{lh}, '+>>', "$ctx->{-tmp}/solve.log" or die "open: $!";
+ unless ($ctx->{lh}) {
+ open $ctx->{lh}, '+>>', "$ctx->{-tmp}/solve.log" or
+ die "open: $!";
+ }
my $solver = PublicInbox::SolverGit->new($ctx->{ibx},
\&solve_result, $ctx);
$solver->{gits} //= [ $ctx->{git} ];
my $solver = PublicInbox::SolverGit->new($ctx->{ibx},
\&solve_result, $ctx);
$solver->{gits} //= [ $ctx->{git} ];
package PublicInbox::WwwCoderepo;
use v5.12;
use File::Temp 0.19 (); # newdir
package PublicInbox::WwwCoderepo;
use v5.12;
use File::Temp 0.19 (); # newdir
+use POSIX qw(O_RDWR F_GETFL);
use PublicInbox::ViewVCS;
use PublicInbox::WwwStatic qw(r);
use PublicInbox::GitHTTPBackend;
use PublicInbox::ViewVCS;
use PublicInbox::WwwStatic qw(r);
use PublicInbox::GitHTTPBackend;
};
$self->{$_} = 10 for qw(summary_branches summary_tags);
$self->{$_} = 10 for qw(summary_log);
};
$self->{$_} = 10 for qw(summary_branches summary_tags);
$self->{$_} = 10 for qw(summary_log);
+
+ # try reuse STDIN if it's already /dev/null
+ open $self->{log_fh}, '+>', '/dev/null' or die "open: $!";
+ my @l = stat($self->{log_fh}) or die "stat: $!";
+ my @s = stat(STDIN) or die "stat(STDIN): $!";
+ if ("@l[0, 1]" eq "@s[0, 1]") {
+ my $f = fcntl(STDIN, F_GETFL, 0) // die "F_GETFL: $!";
+ $self->{log_fh} = *STDIN{IO} if $f & O_RDWR;
+ }
}
$path_info =~ m!\A/(.+?)/\z! and
($ctx->{git} = $cr->{$1}) and return summary($self, $ctx);
}
$path_info =~ m!\A/(.+?)/\z! and
($ctx->{git} = $cr->{$1}) and return summary($self, $ctx);
- $path_info =~ m!\A/(.+?)/([a-f0-9]+)/s/([^/]+)?\z! and
- ($ctx->{git} = $cr->{$1}) and
+ if ($path_info =~ m!\A/(.+?)/([a-f0-9]+)/s/([^/]+)?\z! and
+ ($ctx->{git} = $cr->{$1})) {
+ $ctx->{lh} = $self->{log_fh};
return PublicInbox::ViewVCS::show($ctx, $2, $3);
return PublicInbox::ViewVCS::show($ctx, $2, $3);
if ($path_info =~ m!\A/(.+?)/tree/(.*)\z! and
($ctx->{git} = $cr->{$1})) {
if ($path_info =~ m!\A/(.+?)/tree/(.*)\z! and
($ctx->{git} = $cr->{$1})) {
+ $ctx->{lh} = $self->{log_fh};
return PublicInbox::RepoTree::srv_tree($ctx, $2) // r(404);
}
return PublicInbox::RepoTree::srv_tree($ctx, $2) // r(404);
}