@matheusbsbs / matheus-bagliano / commits / 33f2a3108e
Fork 0

git svn: Don't create empty directories whose parents were deleted

Commit 6111b93 "git svn: attempt to create empty dirs on clone+rebase" will create empty directories 'a/b' and 'a/c' if they were previously created in SVN, even if their parent directory 'a' was deleted. For example, unhandled.log may contain lines like this: r32 +empty_dir: packages/sipb-xen-remctl-auto/sipb-xen-remctl-auto/files/etc/remctl/sipb-xen-auto/acl +empty_dir: packages/sipb-xen-remctl-auto/sipb-xen-remctl-auto/files/etc/remctl/sipb-xen-auto/machine.d +empty_dir: packages/sipb-xen-remctl-auto/sipb-xen-remctl-auto/files/etc/remctl/sipb-xen-auto/moira-acl [...] r314 -empty_dir: packages/sipb-xen-remctl-auto [ew: rewrote to be line-wrapped at <= 80-columns] Reported-by: Evan Broder <broder@mit.edu> Signed-off-by: Greg Price <price@ksplice.com> Acked-by: Eric Wong <normalperson@yhbt.net>

Greg Price committed Dec 7, 2009 at 22:28 UTC 33f2a3108eeacbd937021470aa6e67c01ceec960
1 file changed +2 -1
git-svn.perl
+2 -1
@@ -2748,7 +2748,8 @@ sub mkemptydirs {
2748 } elsif (/^ \+empty_dir: (.+)$/) {
2749 $empty_dirs{$1} = 1;
2750 } elsif (/^ \-empty_dir: (.+)$/) {
2751 - delete $empty_dirs{$1};
2751 + my @d = grep {m[^\Q$1\E(/|$)]} (keys %empty_dirs);
2752 + delete @empty_dirs{@d};
2753 }
2754 }
2755 close $fh;