aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Benc <jbenc@redhat.com>2018-06-28 15:42:11 -0400
committerStephen Finucane <stephen@that.guru>2018-07-13 18:33:19 +0100
commit67faf96ab96d93252c89967ef766bcbe8214c0fc (patch)
tree1c2442692b704892c2876dc21ea09d05172e3d75
parentd6491b59d97ba7fd6a498490f4cb3b6159dd53ee (diff)
downloadpatchwork-67faf96ab96d93252c89967ef766bcbe8214c0fc.tar
patchwork-67faf96ab96d93252c89967ef766bcbe8214c0fc.tar.gz
parser: fix parsing of patches with headings
Some people tend to use lines full of '=' as a fancy way to format headings in their commit messages in a rst-like style. However, the current parser treats such lines as a beginning of a diff. The only currently used tool that produces diffs with '=' lines is quilt in the default configuration. However, even with quilt, the diff looks this way: Index: dir/file =================================================================== --- dir.orig/file +++ dir/file @@ ...etc... It's enough to match on the "Index:" line. The state of the state machine is kept at 1 when it encounters the '=' line, thus it's safe to remove the match on '=' completely. [This prevents us from properly parsing metadata out of the changelog. -dcz ] Signed-off-by: Jiri Benc <jbenc@redhat.com> Reviewed-by: Stephen Finucane <stephen@that.guru>
-rw-r--r--patchwork/parser.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/patchwork/parser.py b/patchwork/parser.py
index a40f931..a2db403 100644
--- a/patchwork/parser.py
+++ b/patchwork/parser.py
@@ -745,7 +745,7 @@ def parse_patch(content):
# state specified the line we just saw, and what to expect next
state = 0
# 0: text
- # 1: suspected patch header (diff, ====, Index:)
+ # 1: suspected patch header (diff, Index:)
# 2: patch header line 1 (---)
# 3: patch header line 2 (+++)
# 4: patch hunk header line (@@ line)
@@ -753,7 +753,7 @@ def parse_patch(content):
# 6: patch meta header (rename from/rename to)
#
# valid transitions:
- # 0 -> 1 (diff, ===, Index:)
+ # 0 -> 1 (diff, Index:)
# 0 -> 2 (---)
# 1 -> 2 (---)
# 2 -> 3 (+++)
@@ -776,7 +776,7 @@ def parse_patch(content):
line += '\n'
if state == 0:
- if line.startswith('diff ') or line.startswith('===') \
+ if line.startswith('diff ') \
or line.startswith('Index: '):
state = 1
buf += line