diff options
author | Jiri Benc <jbenc@redhat.com> | 2018-06-28 15:42:11 -0400 |
---|---|---|
committer | Stephen Finucane <stephen@that.guru> | 2018-07-13 18:33:19 +0100 |
commit | 67faf96ab96d93252c89967ef766bcbe8214c0fc (patch) | |
tree | 1c2442692b704892c2876dc21ea09d05172e3d75 | |
parent | d6491b59d97ba7fd6a498490f4cb3b6159dd53ee (diff) | |
download | patchwork-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.py | 6 |
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 |