diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-11-22 18:11:32 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-11-22 18:15:42 -0800 |
commit | 9be30eed61993a6f2d04a1609723e64e7632a64e (patch) | |
tree | deea3b2111051bab7afe65c86188afc744d7e7a5 | |
parent | git svn: always reuse existing remotes on fetch (diff) | |
download | tgif-9be30eed61993a6f2d04a1609723e64e7632a64e.tar.xz |
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>
-rwxr-xr-x | git-svn.perl | 3 | ||||
-rwxr-xr-x | t/t9146-git-svn-empty-dirs.sh | 23 |
2 files changed, 26 insertions, 0 deletions
diff --git a/git-svn.perl b/git-svn.perl index 7f7a56fbea..957d44e630 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 5948544ec5..70c52c1f97 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 |