Index: trunk/tools/svn2new.pl
===================================================================
--- trunk/tools/svn2new.pl	(revision 757)
+++ trunk/tools/svn2new.pl	(revision 759)
@@ -2,11 +2,25 @@
 my @i = `svn log -qv -r $r:HEAD ../asma`;
 my (%a, %d);
+my @d;
 for (@i) {
-	if (m{^   A /trunk/asma/(\S+\.sap)(?: \(from /trunk/asma/(\S+\.sap)\))?}) {
+	if (m{^   A /trunk/asma/(\S+\.sap)(?: \(from /trunk/asma/(\S+\.sap):\d+\))?}) {
 		$a{$1} = 1, delete $d{$1} if !$2 || delete $a{$2};
 	}
-	elsif (m{^   D /trunk/asma/(\S+\.sap)}) {
-		$d{$1} = 1;
-		delete $a{$1};
+	elsif (m{^   D /trunk/asma/(\S+)}) {
+		# postpone deletes after adds, so that copy+delete in one commit works
+		push @d, $1;
+	}
+	elsif (m{^---}) {
+		for (@d) {
+			$d{$_} = 1;
+			if (/\.sap$/) {
+				delete $a{$_};
+			}
+			else {
+				my $dir = $_;
+				delete @a{grep m{^$dir/}, keys %a};
+			}
+		}
+		@d = ();
 	}
 }
@@ -15,3 +29,3 @@
 open F, ">deleted.txt" or die;
 print F "$_\n" for sort keys %d;
-printf "New: %d Deleted: %d\n", scalar %a, scalar %d;
+printf "New: %d Deleted: %d\n", scalar(keys %a), scalar(keys %d);
