WebKitTools:
authorddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 25 Jun 2006 23:28:14 +0000 (23:28 +0000)
committerddkilzer <ddkilzer@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 25 Jun 2006 23:28:14 +0000 (23:28 +0000)
        Reviewed by Darin.

        * Scripts/svn-apply: Speed up isDirectoryEmptyForRemoval() by returning as soon as we find
        that the directory is not empty instead of reading in every single file and directory first,
        then checking the count.  Avoid warning in removeDirectoriesIfNeeded() if $svnOutput is not
        defined.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15039 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/svn-apply

index 25cf76a17bf5e299c0165c20200f452a245cec41..efb787a879a30225cc5c8e475ba4eaf5675033d3 100644 (file)
@@ -1,3 +1,12 @@
+2006-06-25  David Kilzer  <ddkilzer@kilzer.net>
+
+        Reviewed by Darin.
+
+        * Scripts/svn-apply: Speed up isDirectoryEmptyForRemoval() by returning as soon as we find
+        that the directory is not empty instead of reading in every single file and directory first,
+        then checking the count.  Avoid warning in removeDirectoriesIfNeeded() if $svnOutput is not
+        defined.
+
 2006-06-25  Darin Adler  <darin@apple.com>
 
         * Scripts/svn-apply: Tweak comments.
index 9f6402aa21c628013f56cf1d6447cdf3a651c784..d84d66b7076fd0583585fa0dc0c2e67d00f69a3f 100755 (executable)
@@ -138,7 +138,7 @@ sub addDirectoriesIfNeeded($)
     my $dir = ".";
     while (scalar @dirs) {
         $dir = File::Spec->catdir($dir, shift @dirs);
-        next if (exists $checkedDirectories{$dir});
+        next if exists $checkedDirectories{$dir};
         if (! -e $dir) {
             mkdir $dir or die "Failed to create required directory '$dir' for path '$path'\n";
             system "svn", "add", $dir;
@@ -192,23 +192,20 @@ sub handleBinaryChange($$)
 sub isDirectoryEmptyForRemoval($)
 {
     my ($dir) = @_;
+    my $directoryIsEmpty = 1;
     opendir DIR, $dir or die "Could not open '$dir' to list files: $?";
-    my @files = grep {
-        if (exists $removeDirectoryIgnoreList{$_}) {
-            0;
-        } elsif (! -d File::Spec->catdir($dir, $_)) {
-            1;
+    for (my $item = readdir DIR; $item && $directoryIsEmpty; $item = readdir DIR) {
+        next if exists $removeDirectoryIgnoreList{$item};
+        if (! -d File::Spec->catdir($dir, $item)) {
+            $directoryIsEmpty = 0;
         } else {
-            my $svnOutput = svnStatus(File::Spec->catdir($dir, $_));
-            if ($svnOutput && substr($svnOutput, 0, 1) eq "D") {
-                0;
-            } else {
-                1;
-            }
+            my $svnOutput = svnStatus(File::Spec->catdir($dir, $item));
+            next if $svnOutput && substr($svnOutput, 0, 1) eq "D";
+            $directoryIsEmpty = 0;
         }
-    } readdir DIR;
+    }
     closedir DIR;
-    return scalar(@files) == 0;
+    return $directoryIsEmpty;
 }
 
 sub patch($)
@@ -277,7 +274,7 @@ sub removeDirectoriesIfNeeded()
                 $svnOutput = $_;
             }
             close SVN;
-            print $svnOutput;
+            print $svnOutput if $svnOutput;
         }
     }
 }