Subject: Re: [PATCH/RFC 2/2] git-svn: Don't allow missing commit parent to stop git-svn

From: Sam Vilain <[email-masked]>
Date: Thu, 22 Apr 2010 08:07:50 +1200

On Tue, 2010-04-20 at 14:30 -0700, Michael Olson wrote:
> Instead, fall back to assuming that the incoming merge is a bunch of
> cherry-picks and ignore it.
> 
> Signed-off-by: Michael W. Olson <[email-masked]>
> ---
>  git-svn.perl |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/git-svn.perl b/git-svn.perl
> index 0e1feb3..1a53709 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -3110,7 +3110,7 @@ sub check_cherry_pick {
>  	my %commits = map { $_ => 1 }
>  		_rev_list("--no-merges", $tip, "--not", $base);
>  	for my $range ( @ranges ) {
> -		delete @commits{_rev_list($range)};
> +		eval { delete @commits{_rev_list($range)} };
>  	}
>  	for my $commit (keys %commits) {
>  		if (has_no_changes($commit)) {

If the _rev_list here fails, it means it was passed in a bad range.
This means that the calling code somehow ends up with a commit ID
which doesn't exist.  It's normally better to detect errors when
they happen, not deeper into other functions when they break things...

Sam