git-svn: remove ad-hoc canonicalizations
authorMichael G. Schwern <schwern@pobox.com>
Sat, 28 Jul 2012 09:47:52 +0000 (02:47 -0700)
committerEric Wong <normalperson@yhbt.net>
Thu, 2 Aug 2012 21:46:06 +0000 (21:46 +0000)
[ew: commit title]

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

index 3d120d5bc490724959b423948b7bb51670685cf7..56d1ba712a12695de3fc2d25adfa33539596892e 100755 (executable)
@@ -36,6 +36,7 @@ use Git::SVN::Utils qw(
        canonicalize_url
        join_paths
        add_path_to_url
+       join_paths
 );
 
 use Git qw(
@@ -1598,7 +1599,7 @@ sub post_fetch_checkout {
 
 sub complete_svn_url {
        my ($url, $path) = @_;
-       $path =~ s#/+$##;
+       $path = canonicalize_path($path);
 
        # If the path is not a URL...
        if ($path !~ m#^[a-z\+]+://#) {
@@ -1617,7 +1618,7 @@ sub complete_url_ls_init {
                print STDERR "W: $switch not specified\n";
                return;
        }
-       $repo_path =~ s#/+$##;
+       $repo_path = canonicalize_path($repo_path);
        if ($repo_path =~ m#^[a-z\+]+://#) {
                $ra = Git::SVN::Ra->new($repo_path);
                $repo_path = '';
@@ -1638,9 +1639,8 @@ sub complete_url_ls_init {
        }
        command_oneline('config', $k, $gs->url) unless $orig_url;
 
-       my $remote_path = $gs->path . "/$repo_path";
+       my $remote_path = join_paths( $gs->path, $repo_path );
        $remote_path =~ s{%([0-9A-F]{2})}{chr hex($1)}ieg;
-       $remote_path =~ s#/+#/#g;
        $remote_path =~ s#^/##g;
        $remote_path .= "/*" if $remote_path !~ /\*/;
        my ($n) = ($switch =~ /^--(\w+)/);
index d0087b2897dcec7a21d2b8c406499ab3427bcb8a..08891452a1abbe69aefe7442ffd44f8f3c7660c0 100644 (file)
@@ -460,7 +460,6 @@ sub new {
        }
        {
                my $path = $self->path;
-               $path =~ s{/+}{/}g;
                $path =~ s{\A/}{};
                $path =~ s{/\z}{};
                $self->path($path);