[Scripts] Fix missing variable warnings from svn-create-patch when there are untracke...
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 17 Jul 2017 17:56:23 +0000 (17:56 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 17 Jul 2017 17:56:23 +0000 (17:56 +0000)
https://bugs.webkit.org/show_bug.cgi?id=174575

Reviewed by Brady Eidson.

* Scripts/svn-create-patch:
(findModificationType):
Add support for more status codes. C -> conflicted, ? -> untracked, ! -> missing. Give a
default value of "unknown".

(generateFileList):
Handle all the new modification types. Abort on conflicted, missing, and unknown. Log
for untracked, which matches our old behavior.

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

Tools/ChangeLog
Tools/Scripts/svn-create-patch

index ace99d8..0b43c13 100644 (file)
@@ -1,3 +1,19 @@
+2017-07-16  Sam Weinig  <sam@webkit.org>
+
+        [Scripts] Fix missing variable warnings from svn-create-patch when there are untracked files
+        https://bugs.webkit.org/show_bug.cgi?id=174575
+
+        Reviewed by Brady Eidson.
+
+        * Scripts/svn-create-patch:
+        (findModificationType):
+        Add support for more status codes. C -> conflicted, ? -> untracked, ! -> missing. Give a
+        default value of "unknown".
+
+        (generateFileList):
+        Handle all the new modification types. Abort on conflicted, missing, and unknown. Log
+        for untracked, which matches our old behavior.
+
 2017-07-17  Charlie Turner  <cturner@igalia.com>
 
         Add some missing build dependencies on Fedora
 2017-07-17  Charlie Turner  <cturner@igalia.com>
 
         Add some missing build dependencies on Fedora
index d18a57b..04e3717 100755 (executable)
@@ -103,9 +103,13 @@ for my $path (keys %paths) {
 }
 
 if ($verbose) {
 }
 
 if ($verbose) {
-    print STDERR "List of files for patch:\n";
-    for my $file (sort patchpathcmp values %diffFiles) {
-        print STDERR "  " . $file->{path} . "\n";
+    if (%diffFiles) {
+        print STDERR "List of files for patch:\n";
+        for my $file (sort patchpathcmp values %diffFiles) {
+            print STDERR "  " . $file->{path} . "\n";
+        }
+    } else {
+        print STDERR "No files found for patch.\n";
     }
 }
 
     }
 }
 
@@ -208,7 +212,10 @@ sub findModificationType($)
     }
     return "modification" if ($fileStat eq "M" || $propertyStat eq "M");
     return "deletion" if ($fileStat eq "D");
     }
     return "modification" if ($fileStat eq "M" || $propertyStat eq "M");
     return "deletion" if ($fileStat eq "D");
-    return undef;
+    return "conflicted" if ($fileStat eq "C");
+    return "untracked" if ($fileStat eq "?");
+    return "missing" if ($fileStat eq "!");
+    return "unknown";
 }
 
 sub findSourceFileAndRevision($)
 }
 
 sub findSourceFileAndRevision($)
@@ -297,26 +304,45 @@ sub generateFileList($\%)
             $stat = substr($line, 0, 7);
             $path = substr($line, 7);
         }
             $stat = substr($line, 0, 7);
             $path = substr($line, 7);
         }
+
         next if -d $path;
         next if -d $path;
+
         my $modificationType = findModificationType($stat);
         my $modificationType = findModificationType($stat);
+
+        if ($modificationType eq "missing") {
+            print STDERR "Missing file detected: '" . $path . "'. Aborting.\n";
+            exit -1;
+        }
+
+        if ($modificationType eq "conflicted") {
+            print STDERR "Conflicted file detected: '" . $path . "'. Aborting.\n";
+            exit -1;
+        }
+
+        if ($modificationType eq "unknown") {
+            print STDERR "File with unknown status detected: '" . $path . "' [" . $stat . "]. Aborting.\n";
+            exit -1;
+        }
+
+        if ($modificationType eq "untracked") {
+            print STDERR "Ignoring untracked file: '" . $path . "'\n";
+            next;
+        }
+
         # svn diff -N doesn't work on svn 1.9, so only return top-level deletions.
         if ($modificationType eq "deletion") {
             push @deletedFiles, $path;
             next;
         }
 
         # svn diff -N doesn't work on svn 1.9, so only return top-level deletions.
         if ($modificationType eq "deletion") {
             push @deletedFiles, $path;
             next;
         }
 
-        if ($modificationType) {
-            $diffFiles->{$path}->{path} = $path;
-            $diffFiles->{$path}->{modificationType} = $modificationType;
-            $diffFiles->{$path}->{isBinary} = isBinaryMimeType($path);
-            $diffFiles->{$path}->{isTestFile} = exists $testDirectories{(File::Spec->splitdir($path))[0]} ? 1 : 0;
-            if ($modificationType eq "additionWithHistory") {
-                my ($sourceFile, $sourceRevision) = findSourceFileAndRevision($path);
-                $diffFiles->{$path}->{sourceFile} = $sourceFile;
-                $diffFiles->{$path}->{sourceRevision} = $sourceRevision;
-            }
-        } else {
-            print STDERR $line, "\n";
+        $diffFiles->{$path}->{path} = $path;
+        $diffFiles->{$path}->{modificationType} = $modificationType;
+        $diffFiles->{$path}->{isBinary} = isBinaryMimeType($path);
+        $diffFiles->{$path}->{isTestFile} = exists $testDirectories{(File::Spec->splitdir($path))[0]} ? 1 : 0;
+        if ($modificationType eq "additionWithHistory") {
+            my ($sourceFile, $sourceRevision) = findSourceFileAndRevision($path);
+            $diffFiles->{$path}->{sourceFile} = $sourceFile;
+            $diffFiles->{$path}->{sourceRevision} = $sourceRevision;
         }
     }
     close STAT;
         }
     }
     close STAT;