git svn: fix reparenting when ugly http(s) URLs are used
authorEric Wong <normalperson@yhbt.net>
Mon, 20 Jul 2009 05:08:45 +0000 (22:08 -0700)
committerEric Wong <normalperson@yhbt.net>
Mon, 20 Jul 2009 05:50:06 +0000 (22:50 -0700)
Mishandling of http(s) in need of escaping was causing
t9118-git-svn-funky-branch-names to fail when SVN_HTTPD_PORT
 was defined.

This bug was exposed in (but not caused by)
commit 0b2af457a49e3b00d47d556d5301934d27909db8
(Fix branch detection when repository root is inaccessible)

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl

index cfade63459a77ffa0e79d85fbe9e3aae174789e6..43c86e85a1e1d36210742d34644656151e554da4 100755 (executable)
@@ -4525,10 +4525,12 @@ sub gs_do_switch {
 
        my $full_url = $self->{url};
        my $old_url = $full_url;
-       $full_url .= '/' . escape_uri_only($path) if length $path;
+       $full_url .= '/' . $path if length $path;
        my ($ra, $reparented);
 
-       if ($old_url =~ m#^svn(\+ssh)?://#) {
+       if ($old_url =~ m#^svn(\+ssh)?://# ||
+           ($full_url =~ m#^https?://# &&
+            escape_url($full_url) ne $full_url)) {
                $_[0] = undef;
                $self = undef;
                $RA = undef;