Subject: Re: [PATCH] Avoid errors from git-rev-parse in gitweb blame

From: Jakub Narebski <[email-masked]>
Date: Tue, 03 Jun 2008 04:43:50 -0700 (PDT)

Cc-ed Luben Tuikov, author of this part.

Rafael Garcia-Suarez <[email-masked]> writes:

> git-rev-parse will abort with an error when passed a non-existent
> revision spec, such as "deadbeef^" where deadbeef has no parent.
> Using the --revs-only parameter makes this error go away, while
> retaining functionality, keeping the web server error log nice
> and clean.

Thanks.  This error wasn't detected earlier probably because
'blame' view is rarely enabled; and repo.or.cz gitweb which has
'blame' enabled IIRC use gitweb which is modified there, allowing
incremental blame using AJAX.

> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 55fb100..f3b4b24 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -4226,9 +4226,9 @@ git_blame2
>  			              esc_html($rev));
>  			print "</td>\n";
>  		}
> -		open (my $dd, "-|", git_cmd(), "rev-parse", "$full_rev^")
> +		open (my $dd, "-|", git_cmd(), "rev-parse", '--revs-only', "$full_rev^")
>  			or die_error(undef, "Open git-rev-parse failed");
> -		my $parent_commit = <$dd>;
> +		my $parent_commit = <$dd> || '';
>  		close $dd;
>  		chomp($parent_commit);
>  		my $blamed = href(action => 'blame',

I'd rather remove this, correct it, or make it optional (this is very
fork-heavy).

But this patch is good as it is now...
-- 
Jakub Narebski
Poland
ShadeHawk on #git