summaryrefslogtreecommitdiff
path: root/perl/Git/SVN.pm
diff options
context:
space:
mode:
authorMichael G. Schwern <schwern@pobox.com>2012-07-28 09:38:29 (GMT)
committerEric Wong <normalperson@yhbt.net>2012-08-02 21:44:04 (GMT)
commitca475a61f8c07d475c505bf64d219f7e9d61e728 (patch)
treeb204f8e670d44dec484bd7f6af427e2fd87afc5d /perl/Git/SVN.pm
parent280ad88aa0e851b2f2945222edb8e7b681a7574b (diff)
downloadgit-ca475a61f8c07d475c505bf64d219f7e9d61e728.zip
git-ca475a61f8c07d475c505bf64d219f7e9d61e728.tar.gz
git-ca475a61f8c07d475c505bf64d219f7e9d61e728.tar.bz2
git-svn: add join_paths() to safely concatenate paths
Otherwise you might wind up with things like... my $path1 = undef; my $path2 = 'foo'; my $path = $path1 . '/' . $path2; creating '/foo'. Or this... my $path1 = 'foo/'; my $path2 = 'bar'; my $path = $path1 . '/' . $path2; creating 'foo//bar'. Could have used File::Spec, but I'm shying away from it due to SVN 1.7's pickiness about paths. Felt it would be better to have our own we can control completely. [ew: commit title] Signed-off-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'perl/Git/SVN.pm')
-rw-r--r--perl/Git/SVN.pm10
1 files changed, 6 insertions, 4 deletions
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index fc1ac07..ff74782 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -23,7 +23,11 @@ use Git qw(
command_output_pipe
command_close_pipe
);
-use Git::SVN::Utils qw(fatal can_compress);
+use Git::SVN::Utils qw(
+ fatal
+ can_compress
+ join_paths
+);
my $can_use_yaml;
BEGIN {
@@ -316,9 +320,7 @@ sub init_remote_config {
}
my $old_path = $self->path;
$url =~ s!^\Q$min_url\E(/|$)!!;
- if (length $old_path) {
- $url .= "/$old_path";
- }
+ $url = join_paths($url, $old_path);
$self->path($url);
$url = $min_url;
}