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
Родитель 4d0157d699
Коммит 9be30eed61
2 изменённых файлов: 26 добавлений и 0 удалений

Просмотреть файл

@ -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";

Просмотреть файл

@ -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