about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-01-05 11:00:52 +0000
committerEric Wong <e@80x24.org>2019-01-05 23:16:30 +0000
commit789ac5b0119d8d878380bbe8b3de4c7630460148 (patch)
tree1cd93f45cdd5800983eaf20b3f70ff10850c34d3
parent97c6b564fd79e47ae6fca8de273c2aeaf2f5bea5 (diff)
downloadpublic-inbox-789ac5b0119d8d878380bbe8b3de4c7630460148.tar.gz
The new t/*filter_rubylang.t tests call -index immediately
after -init, which causes confusing messages to show up to
the end user.

Check the validity of the ref before calling "git-log".
-rw-r--r--lib/PublicInbox/SearchIdx.pm11
-rw-r--r--lib/PublicInbox/V2Writable.pm3
-rw-r--r--t/mda_filter_rubylang.t4
3 files changed, 14 insertions, 4 deletions
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 76f3f33a..fd48169d 100644
--- a/lib/PublicInbox/SearchIdx.pm
+++ b/lib/PublicInbox/SearchIdx.pm
@@ -607,6 +607,17 @@ sub _git_log {
         my ($self, $range) = @_;
         my $git = $self->{git};
 
+        if (index($range, '..') < 0) {
+                # don't show annoying git errrors to users who run -index
+                # on empty inboxes
+                $git->qx(qw(rev-parse -q --verify), "$range^0");
+                if ($?) {
+                        open my $fh, '<', '/dev/null' or
+                                die "failed to open /dev/null: $!\n";
+                        return $fh;
+                }
+        }
+
         # Count the new files so they can be added newest to oldest
         # and still have numbers increasing from oldest to newest
         my $fcount = 0;
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 93babed5..0a304aae 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -790,7 +790,8 @@ sub index_prepare {
                 my $git_dir = git_dir_n($self, $i);
                 -d $git_dir or next; # missing parts are fine
                 my $git = PublicInbox::Git->new($git_dir);
-                chomp(my $tip = $git->qx('rev-parse', $head));
+                chomp(my $tip = $git->qx(qw(rev-parse -q --verify), $head));
+                next if $?; # new repo
                 my $range;
                 if (defined(my $cur = $ranges->[$i])) {
                         $range = "$cur..$tip";
diff --git a/t/mda_filter_rubylang.t b/t/mda_filter_rubylang.t
index cb6da4bb..0fb65a42 100644
--- a/t/mda_filter_rubylang.t
+++ b/t/mda_filter_rubylang.t
@@ -29,9 +29,7 @@ for my $v (qw(V1 V2)) {
         my @cmd = ('blib/script/public-inbox-init', "-$v", $v, $mainrepo,
                 "http://example.com/$v", $addr);
         is(system(@cmd), 0, 'public-inbox init OK');
-        if ($v eq 'V1') {
-                is(system('blib/script/public-inbox-index', $mainrepo), 0);
-        }
+        is(system('blib/script/public-inbox-index', $mainrepo), 0);
         is(system(@cfg, "$cfgpfx.filter", 'PublicInbox::Filter::RubyLang'), 0);
         is(system(@cfg, "$cfgpfx.altid",
                 'serial:alerts:file=msgmap.sqlite3'), 0);