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>
This commit is contained in:
Michael G. Schwern
2012-07-28 02:38:29 -07:00
committed by Eric Wong
parent 280ad88aa0
commit ca475a61f8
4 changed files with 72 additions and 5 deletions

View File

@ -34,6 +34,7 @@ use Git::SVN::Utils qw(
can_compress
canonicalize_path
canonicalize_url
join_paths
);
use Git qw(
@ -1275,7 +1276,7 @@ sub get_svnprops {
$path = $cmd_dir_prefix . $path;
fatal("No such file or directory: $path") unless -e $path;
my $is_dir = -d $path ? 1 : 0;
$path = $gs->{path} . '/' . $path;
$path = join_paths($gs->{path}, $path);
# canonicalize the path (otherwise libsvn will abort or fail to
# find the file)