From: Jonathan Nieder Date: Sun, 07 Jul 2013 00:24:30 GMT Subject: Re: [PATCH 2/2] git-svn: allow git-svn fetching to work using serf Message-ID: <20130707002430.GE30132@google.com> In-Reply-To: (cc-ing Eric Wong, who wrote this code) Hi, Kyle McKay wrote: > Temp file with moniker 'svn_delta' already in use at Git.pm line 1250 > Temp file with moniker 'git_blob' already in use at Git.pm line 1250 > > David Rothenberger has determined the cause to > be that ra_serf does not drive the delta editor in a depth-first > manner [...]. Instead, the calls come in this order: [...] > --- a/perl/Git/SVN/Fetcher.pm > +++ b/perl/Git/SVN/Fetcher.pm > @@ -315,11 +315,13 @@ sub change_file_prop { > sub apply_textdelta { > my ($self, $fb, $exp) = @_; > return undef if $self->is_path_ignored($fb->{path}); > - my $fh = $::_repository->temp_acquire('svn_delta'); > + my $suffix = 0; > + ++$suffix while $::_repository->temp_is_locked("svn_delta_${$}_$suffix"); > + my $fh = $::_repository->temp_acquire("svn_delta_${$}_$suffix"); > # $fh gets auto-closed() by SVN::TxDelta::apply(), > # (but $base does not,) so dup() it for reading in close_file > open my $dup, '<&', $fh or croak $!; > - my $base = $::_repository->temp_acquire('git_blob'); > + my $base = $::_repository->temp_acquire("git_blob_${$}_$suffix"); Thanks for your work tracking this down. I'm a bit confused. Are you saying that apply_textdelta gets called multiple times in a row without an intervening close_file? Puzzled, Jonathan