Re: [PATCH/RFC 2/2] git-svn: Don't allow missing commit parent to stop git-svn
- From
Michael Olson <mwolson@gnu.org>
- Date
- Apr 21, 2010, 21:17 UTC
- Message-ID
- <m2sc8b3bef91004211417n1f3368a7ica94a1c2a7656622@mail.gmail.com>
- In-Reply-To
- <1271880470.20208.47.camel@denix>
On Wed, Apr 21, 2010 at 1:07 PM, Sam Vilain <sam@vilain.net> wrote:
Show 27 quoted lines
> 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 <mwolson@gnu.org>
>> ---
>> 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...Interestingly, I see people reporting the same problem in the thread "git svn clone of subversion's own code failing". So it's not just related to patch 1/2 of this series. At least that thread has a public-facing repo so the problem should be easier to reproduce for a real fix.
-- Michael Olson | http://mwolson.org/