2011-03-10 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Mar 2011 00:05:57 +0000 (00:05 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 11 Mar 2011 00:05:57 +0000 (00:05 +0000)
        Reviewed by Adam Roben.

        PrettyPatch displays last two lines of a git-format-patch diff strangely
        https://bugs.webkit.org/show_bug.cgi?id=29317

        If the diff section has full range information, we parse only enough to cover the
        range. This avoids incorrectly showing trailing lines (like git signature) as part
        of the patch.

        * PrettyPatch/PrettyPatch.rb:

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

Websites/bugs.webkit.org/ChangeLog
Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb

index 8dd2311..e11beaa 100644 (file)
@@ -1,3 +1,16 @@
+2011-03-10  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
+
+        Reviewed by Adam Roben.
+
+        PrettyPatch displays last two lines of a git-format-patch diff strangely
+        https://bugs.webkit.org/show_bug.cgi?id=29317
+
+        If the diff section has full range information, we parse only enough to cover the
+        range. This avoids incorrectly showing trailing lines (like git signature) as part
+        of the patch.
+
+        * PrettyPatch/PrettyPatch.rb:
+
 2011-03-10  Adam Roben  <aroben@apple.com>
 
         Don't search for intra-line diffs in really long lines
index 8f42ac2..2eaf3c1 100644 (file)
@@ -65,7 +65,7 @@ private
 
     START_OF_BINARY_DATA_FORMAT = /^[0-9a-zA-Z\+\/=]{20,}/ # Assume 20 chars without a space is base64 binary data.
 
-    START_OF_SECTION_FORMAT = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@\s*(.*)/
+    START_OF_SECTION_FORMAT = /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@\s*(.*)/
 
     START_OF_EXTENT_STRING = "%c" % 0
     END_OF_EXTENT_STRING = "%c" % 1
@@ -670,7 +670,14 @@ END
             lines.length >= 1 or raise "DiffSection.parse only received %d lines" % lines.length
 
             matches = START_OF_SECTION_FORMAT.match(lines[0])
-            from, to = [matches[1].to_i, matches[2].to_i] unless matches.nil?
+
+            if matches
+                from, to = [matches[1].to_i, matches[3].to_i]
+                if matches[2] and matches[4]
+                    from_end = from + matches[2].to_i
+                    to_end = to + matches[4].to_i
+                end
+            end
 
             @blocks = []
             diff_block = nil
@@ -710,6 +717,8 @@ END
                     from += 1 unless from.nil?
                     to += 1 unless to.nil?
                 end
+
+                break if from_end and to_end and from == from_end and to == to_end
             end
 
             changes = [ [ [], [] ] ]
@@ -753,7 +762,7 @@ END
                 end
             end
 
-            @blocks.unshift(ContextLine.new(matches[3])) unless matches.nil? || matches[3].empty?
+            @blocks.unshift(ContextLine.new(matches[5])) unless matches.nil? || matches[5].empty?
         end
 
         def to_html