'webkit-patch post' no longer works with moved/copied files
authorjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jan 2017 18:52:48 +0000 (18:52 +0000)
committerjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jan 2017 18:52:48 +0000 (18:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=166914
<rdar://problem/29979707>

Reviewed by Daniel Bates.

SVN 1.9 has a bug where when a file has been moved or copied, the svn diff of the new
file outputs only the "Index:" line with an empty body.  This workaround
ignores such output from svn diff.  A issue has been filed with SVN, a link to the
public email list tracking this bug is below.
http://mail-archives.apache.org/mod_mbox/subversion-users/201701.mbox/%3cCF9BDE0A-7454-4405-8259-1120C6B76A03@apple.com%3e

* Scripts/svn-create-patch:
(generateDiff): Ignore an "Index:" line with an empty body.

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

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

index c2f56bb..c1e8c5d 100644 (file)
@@ -1,3 +1,21 @@
+2017-01-17  Jonathan Bedard  <jbedard@apple.com>
+
+        'webkit-patch post' no longer works with moved/copied files
+        https://bugs.webkit.org/show_bug.cgi?id=166914
+        <rdar://problem/29979707>
+
+        Reviewed by Daniel Bates.
+
+        SVN 1.9 has a bug where when a file has been moved or copied, the svn diff of the new
+        file outputs only the "Index:" line with an empty body.  This workaround
+        ignores such output from svn diff.  A issue has been filed with SVN, a link to the
+        public email list tracking this bug is below.
+        http://mail-archives.apache.org/mod_mbox/subversion-users/201701.mbox/%3cCF9BDE0A-7454-4405-8259-1120C6B76A03@apple.com%3e
+        
+
+        * Scripts/svn-create-patch:
+        (generateDiff): Ignore an "Index:" line with an empty body.
+
 2017-01-16  Joseph Pecoraro  <pecoraro@apple.com>
 
         Remove the REQUEST_ANIMATION_FRAME flag
index 8b90efc..141accd 100755 (executable)
@@ -232,10 +232,21 @@ sub generateDiff($$)
     my $diffOptions = diffOptionsForFile($file);
     my $escapedFile = escapeSubversionPath($file);
     open DIFF, "svn diff --diff-cmd diff -x -$diffOptions '$escapedFile' |" or die;
+    my $numTextChunks = 0;
     while (<DIFF>) {
+        $numTextChunks += 1 if parseChunkRange($_);
         $patch .= $_;
     }
     close DIFF;
+    if (!$numTextChunks) {
+        # For moved/copied files without post changes SVN 1.9 or greater emits a diff with an empty
+        # body as opposed to emitting nothing as in earlier versions of SVN. For example, move file
+        # A.txt to B.txt then the diff of B.txt in SVN 1.9 or greater is:
+        #     Index: B.txt
+        #     ===================================================================
+        # Therefore we ignore emitting such a diff.
+        $patch = "";
+    }
     if (basename($file) eq "ChangeLog") {
         my $changeLogHash = fixChangeLogPatch($patch);
         $patch = $changeLogHash->{patch};