From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 2843D1F4B4 for ; Mon, 12 Apr 2021 17:32:20 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] lei blob: quiet "git rev-parse --git-dir" stderr w/o --cwd Date: Mon, 12 Apr 2021 17:32:20 +0000 Message-Id: <20210412173220.16023-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This seemed to be causing occasional "make check-run" failures with errors bleeding into other tests. --- lib/PublicInbox/LeiBlob.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/PublicInbox/LeiBlob.pm b/lib/PublicInbox/LeiBlob.pm index ed0754a3..ad885306 100644 --- a/lib/PublicInbox/LeiBlob.pm +++ b/lib/PublicInbox/LeiBlob.pm @@ -23,12 +23,18 @@ sub sol_done { # EOF callback for main daemon $sol->wq_wait_old(\&sol_done_wait, $lei); } -sub get_git_dir ($) { - my ($d) = @_; +sub get_git_dir ($$) { + my ($lei, $d) = @_; return $d if -d "$d/objects" && -d "$d/refs" && -e "$d/HEAD"; my $cmd = [ qw(git rev-parse --git-dir) ]; - my ($r, $pid) = popen_rd($cmd, {GIT_DIR => undef}, { '-C' => $d }); + my $opt = { '-C' => $d }; + if (defined($lei->{opt}->{cwd})) { # --cwd used, report errors + $opt->{2} = $lei->{2}; + } else { # implicit --cwd, quiet errors + open $opt->{2}, '>', '/dev/null' or die "open /dev/null: $!"; + } + my ($r, $pid) = popen_rd($cmd, {GIT_DIR => undef}, $opt); chomp(my $gd = do { local $/; <$r> }); waitpid($pid, 0) == $pid or die "BUG: waitpid @$cmd ($!)"; $? == 0 ? $gd : undef; @@ -114,7 +120,7 @@ sub lei_blob { # maybe it's a non-email (code) blob from a coderepo my $git_dirs = $opt->{'git-dir'} //= []; if ($opt->{'cwd'} // 1) { - my $cgd = get_git_dir('.'); + my $cgd = get_git_dir($lei, '.'); unshift(@$git_dirs, $cgd) if defined $cgd; } return $lei->fail('no --git-dir to try') unless @$git_dirs;