git-svn clone fails
I'm trying to clone OpenTTD subversion repository using git-svn from Debian Lenny testing. Git version is 1.7.0. The clone operationg always fails at the same revision with same error message.
I am using the following command:
git svn clone svn://svn.openttd.org/trunk openttd
Which gives this error message:
r1170 = 12fbf791d6e353346315756bf46cbbf75a325833 (refs/remotes/git-svn)
Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/SVN/Core.pm line 584.
Network connection closed unexpectedly: at /usr/lib/git-core/git-svn line 5047
Is this a Debian-specific problem, or a bug in git-svn?
Janne Kulmala
Quoted 6 lines · Janne Kulmala
I'm trying to clone OpenTTD subversion repository using git-svn from Debian Lenny testing. Git version is 1.7.0. The clone operationg always fails at the same revision with same error message.
I am using the following command:
Quoted 7 lines
git svn clone svn://svn.openttd.org/trunk openttd
Which gives this error message:
r1170 =
12fbf791d6e353346315756bf46cbbf75a325833(refs/remotes/git-svn) Use of uninitialized value in concatenation (.) or string at/usr/lib/perl5/SVN/Core.pmline 584.
I don't do perl but this looks like a bug in subversion's perl bindings. This seems to fix it (where fix basically means something like "make sure this warning/error isn't printed again):
usr/lib/perl5/SVN/Core.pm renamed from usr/lib/perl5/SVN/Core.pm.oud +3 -1
@@ -581,7 +581,9 @@ my $error_message = $svn_error->strerror(); while ($svn_error) { - $error_message .= ': ' . $svn_error->message(); + if ($svn_error->message()) { + $error_message .= ': ' . $svn_error->message(); + } $svn_error = $svn_error->child(); } return $error_message;
Quoted 4 lines
Network connection closed unexpectedly: at
/usr/lib/git-core/git-svnline 5047Is this a Debian-specific problem, or a bug in git-svn?
No, the exact same problem can be triggered in fedora rawhide too (with git-svn-1.7.0.1-1.fc14.noarch). It seems openttd's svn server terminates the connection after fetching (roughly) 1000 commits. (I'm not sure what happens. I don't know how to debug perl.)
A workaround might be to enter the openttd directory you just created and do "git svn fetch" a number of times. (I stopped after it terminated for the third time, around commit 2600. There are over 19.500 commits in that trunk, so that might take a while. Whether you'll end up with a working and correct clone I can't say.)
Could it be openttd's svn server doesn't really appreciate the way git-svn uses it (a straightforward svn checkout finished much quicker and in one session)?
Regards,
Paul Bolle