lib/PublicInbox/SolverGit.pm | 6 +++--- diff --git a/lib/PublicInbox/SolverGit.pm b/lib/PublicInbox/SolverGit.pm index 52dfaf3df942676a5cbdb432160a8e9068f69502..1e96d042e9d7ccd788354fc86fca034cb5e24195 100644 --- a/lib/PublicInbox/SolverGit.pm +++ b/lib/PublicInbox/SolverGit.pm @@ -81,9 +81,8 @@ my $git = shift @$try or die 'BUG {try_gits} empty'; my $oid_b = $want->{oid_b}; my ($oid_full, $type, $size) = $git->check($oid_b); - # other than {oid_b, try_gits, try_ibxs} - my $have_hints = scalar keys %$want > 3; - if (defined($type) && (!$have_hints || $type eq 'blob')) { + if ($oid_b eq ($oid_full // '') || (defined($type) && +- (!$self->{have_hints} || $type eq 'blob'))) { delete $want->{try_gits}; return [ $git, $oid_full, $type, int($size) ]; # done, success } @@ -683,6 +682,7 @@ $self->{out} = $out; $self->{seen_oid} = {}; $self->{tot} = 0; $self->{psgi_env} = $env; + $self->{have_hints} = 1 if scalar keys %$hints; $self->{todo} = [ { %$hints, oid_b => $oid_want } ]; $self->{patches} = []; # [ $di, $di, ... ] $self->{found} = {}; # { abbr => [ ::Git, oid, type, size, $di ] }