[PATCH 1/1] parser: fix parsing of patches with headings
Don Zickus
dzickus at redhat.com
Fri Jun 29 05:42:11 AEST 2018
From: Jiri Benc <jbenc at redhat.com>
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 at redhat.com>
---
patchwork/parser.py | 6 +++---
1 file 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
--
2.14.4
More information about the Patchwork
mailing list