From: Jiri Benc Date: Thu, 28 Jun 2018 19:42:11 +0000 (-0400) Subject: parser: fix parsing of patches with headings X-Git-Tag: v2.1.1~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8060b9a6719bcfe80f7f23143447167dc02c23d5;p=thirdparty%2Fpatchwork.git 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 Reviewed-by: Stephen Finucane (cherry picked from commit 67faf96ab96d93252c89967ef766bcbe8214c0fc) --- diff --git a/patchwork/parser.py b/patchwork/parser.py index a40f9314..a2db4037 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