From: Eric Wong Date: Mon, 23 Nov 2009 02:11:32 +0000 (-0800) Subject: git svn: strip leading path when making empty dirs X-Git-Tag: v1.6.6-rc0~2^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9be30eed61993a6f2d04a1609723e64e7632a64e;p=git-core%2Fgit.git 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 --- diff --git a/git-svn.perl b/git-svn.perl index 7f7a56fbe..957d44e63 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -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"; diff --git a/t/t9146-git-svn-empty-dirs.sh b/t/t9146-git-svn-empty-dirs.sh index 5948544ec..70c52c1f9 100755 --- a/t/t9146-git-svn-empty-dirs.sh +++ b/t/t9146-git-svn-empty-dirs.sh @@ -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