Reviewed by Mitz and Adam.
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Jan 2008 16:59:24 +0000 (16:59 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 21 Jan 2008 16:59:24 +0000 (16:59 +0000)
        * Scripts/svn-create-patch: Sort ChangeLog files first. Also slightly improved the
        sorting speed by doing all sort criteria in a single pass instead of three sorts.

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

WebKitTools/ChangeLog
WebKitTools/Scripts/svn-create-patch

index 13595c8ae0ba6ec73a4294720cf8ad0948908df6..620647e104a717747d1fef12cdad6640147c73f3 100644 (file)
@@ -1,3 +1,10 @@
+2008-01-21  Darin Adler  <darin@apple.com>
+
+        Reviewed by Mitz and Adam.
+
+        * Scripts/svn-create-patch: Sort ChangeLog files first. Also slightly improved the
+        sorting speed by doing all sort criteria in a single pass instead of three sorts.
+
 2008-01-21  Simon Hausmann  <hausmann@webkit.org>
 
         Reviewed by Holger.
index 6ab2f130570df69391e93dc71f25259cc19e50b9..365737a0421c0c2effc2814b5b6b16c96a3d7c5f 100755 (executable)
@@ -66,6 +66,7 @@ sub isBinaryMimeType($);
 sub manufacturePatchForAdditionWithHistory($);
 sub numericcmp($$);
 sub outputBinaryContent($);
+sub patchpathcmp($$);
 sub pathcmp($$);
 sub processPaths(\@);
 sub splitpath($);
@@ -83,21 +84,38 @@ if (!$result || $showHelp) {
     exit 1;
 }
 
+# Sort the diffs for easier reviewing.
 my %paths = processPaths(@ARGV);
 
-# Generate a list of files requiring diffs
+# Generate a list of files requiring diffs.
 my %diffFiles;
 for my $path (keys %paths) {
     generateFileList($path, %diffFiles);
 }
 
-# Generate the diff for source code files, test files then binary files for easy reviewing
-for my $fileData (sort binarycmp sort testfilecmp sort pathcmp values %diffFiles) {
-    generateDiff($fileData);
+# Generate the diffs, in a order chosen for easy reviewing.
+for my $path (sort patchpathcmp values %diffFiles) {
+    generateDiff($path);
 }
 
 exit 0;
 
+# Overall sort, considering multiple criteria.
+sub patchpathcmp($$)
+{
+    my ($a, $b) = @_;
+
+    # All binary files come after all non-binary files.
+    my $result = binarycmp($a, $b);
+    return $result if $result;
+
+    # All test files come after all non-test files.
+    $result = testfilecmp($a, $b);
+    return $result if $result;
+
+    # Final sort is a "smart" sort by directory and file name.
+    return pathcmp($a, $b);
+}
 
 # Sort so text files appear before binary files.
 sub binarycmp($$)
@@ -354,6 +372,7 @@ sub outputBinaryContent($)
 # Sort first by directory, then by file, so all paths in one directory are grouped
 # rather than being interspersed with items from subdirectories.
 # Use numericcmp to sort directory and filenames to make order logical.
+# Also include a special case for ChangeLog, which comes first in any directory.
 sub pathcmp($$)
 {
     my ($fileDataA, $fileDataB) = @_;
@@ -362,6 +381,8 @@ sub pathcmp($$)
     my ($dirb, $nameb) = splitpath($fileDataB->{path});
 
     return numericcmp($dira, $dirb) if $dira ne $dirb;
+    return -1 if $namea eq "ChangeLog" && $nameb ne "ChangeLog";
+    return +1 if $namea ne "ChangeLog" && $nameb eq "ChangeLog";
     return numericcmp($namea, $nameb);
 }