Code

Merge git://git.bogomips.org/git-svn
authorJunio C Hamano <gitster@pobox.com>
Mon, 23 Nov 2009 03:01:15 +0000 (19:01 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Nov 2009 03:01:15 +0000 (19:01 -0800)
* git://git.bogomips.org/git-svn:
  git svn: strip leading path when making empty dirs
  git svn: always reuse existing remotes on fetch

git-svn.perl
t/t9146-git-svn-empty-dirs.sh

index 2746895ae620a37c4b84419caf221db8f476e197..957d44e63004cef131fca5c7dad75e7049d15842 100755 (executable)
@@ -428,6 +428,7 @@ sub cmd_fetch {
        if (@_ > 1) {
                die "Usage: $0 fetch [--all] [--parent] [svn-remote]\n";
        }
+       $Git::SVN::no_reuse_existing = undef;
        if ($_fetch_parent) {
                my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
                unless ($gs) {
@@ -956,6 +957,7 @@ sub cmd_multi_init {
 }
 
 sub cmd_multi_fetch {
+       $Git::SVN::no_reuse_existing = undef;
        my $remotes = Git::SVN::read_all_remotes();
        foreach my $repo_id (sort keys %$remotes) {
                if ($remotes->{$repo_id}->{url}) {
@@ -2750,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";
index 5948544ec580dd6d55a9a0393792048a377e749a..70c52c1f9754934f1f868f998f3c007696799787 100755 (executable)
@@ -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