From 9be30eed61993a6f2d04a1609723e64e7632a64e Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 22 Nov 2009 18:11:32 -0800 Subject: [PATCH] git svn: strip leading path when making empty dirs MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- git-svn.perl | 3 +++ t/t9146-git-svn-empty-dirs.sh | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) 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 -- 2.30.2