Re: [RFH] - git-svn auth bug (possibly SVN 1.5.0-related)
- From
Dmitry Potapov <dpotapov@gmail.com>
- Date
- Aug 4, 2008, 14:18 UTC
- Message-ID
- <20080804141820.GT7008@dpotapov.dyndns.org>
- In-Reply-To
- <20080803220251.GB3006@untitled>
On Sun, Aug 03, 2008 at 03:02:51PM -0700, Eric Wong wrote:
Show 6 quoted lines
> > It could be another incompatibility introduced in SVN 1.5.0. > > I'll try to dist-upgrade a machine to Lenny sometime in the next two > weeks so I can test; I'm pretty busy these days but if anybody else > wants to figure this out in the meantime, please do :)
The problem happens only if you use FS format 3 regardless what version of SVN perl binding you use. Also, there is no problem with using SVN 1.5 (I tried 1.5.1) as long as you use FS format 2 (I tested git-svn with libsvn-perl 1.4.2 and 1.5.1 works fine) but if your repository is initialized to use FS format 3 (which is the default in SVN 1.5) then this problem happens with all versions of SVN perl binding, and it happens exactly in the same place:
/home/dpotapov/git/git-svn:3333: my @ce = $opts->{ra}->get_commit_editor($opts->{log},
sub get_commit_editor {
/home/dpotapov/git/git-svn:3909: my ($self, $log, $cb, $pool) = @_;
/home/dpotapov/git/git-svn:3910: my @lock = $SVN::Core::VERSION ge '1.2.0' ? (undef, 0) : ();
/home/dpotapov/git/git-svn:3911: $self->SUPER::get_commit_editor($log, $cb, @lock, $pool);
sub AUTOLOAD {
/usr/lib/perl5/SVN/Ra.pm:74: my $class = ref($_[0]);
/usr/lib/perl5/SVN/Ra.pm:75: my $method = $AUTOLOAD;
/usr/lib/perl5/SVN/Ra.pm:76: $method =~ s/.*:://;
/usr/lib/perl5/SVN/Ra.pm:77: return unless $method =~ m/[^A-Z]/;
/usr/lib/perl5/SVN/Ra.pm:79: my $self = shift;
/usr/lib/perl5/SVN/Ra.pm:82: my $func = $self->{session}->can ($method)
/usr/lib/perl5/SVN/Ra.pm:85: my @ret = $func->($self->{session}, @_);Numbers of lines may be different for different versions of libsvn-perl, but the effect is exactly the same. Instead of going to the next line and completing AUTOLOAD, if you use FS format 3 then you end up in croak_on_error(), which uses some uninitialized value in string concatenation (which produces an additional warning) and then calls croak(). End of the story :(
Dmitry