git svn: strip leading path when making empty dirs

Since unhandled.log stores paths relative to the repository
root, we need to strip out leading path components if the
directories we're tracking are not the repository root.

Reported-by: Björn Steinbrink
Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
Eric Wong 2009-11-22 18:11:32 -08:00
parent 4d0157d699
commit 9be30eed61
2 changed files with 26 additions and 0 deletions

View File

@ -2752,8 +2752,11 @@ sub mkemptydirs {
}
}
close $fh;
my $strip = qr/\A\Q$self->{path}\E(?:\/|$)/;
foreach my $d (sort keys %empty_dirs) {
$d = uri_decode($d);
$d =~ s/$strip//;
next if -d $d;
if (-e _) {
warn "$d exists but is not a directory\n";

View File

@ -82,4 +82,27 @@ test_expect_success 'git svn mkdirs -r works' '
)
'
test_expect_success 'initialize trunk' '
for i in trunk trunk/a trunk/"weird file name"
do
svn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i"
done
'
test_expect_success 'clone trunk' 'git svn clone -s "$svnrepo" trunk'
test_expect_success 'empty directories in trunk exist' '
(
cd trunk &&
for i in a "weird file name"
do
if ! test -d "$i"
then
echo >&2 "$i does not exist"
exit 1
fi
done
)
'
test_done