[PATCH 05/10] parsemail: Handle series sent "in-reply-to"
Stephen Finucane
stephen.finucane at intel.com
Mon Jun 13 20:41:37 AEST 2016
Take a series, "v2", sent as a reply to another, "v1", like so:
[PATCH 0/3] A cover letter
[PATCH 1/3] The first patch
...
[PATCH v2 0/3] A cover letter
[PATCH v2 1/3] The first patch
...
The current behavior for traversing references is oldest first. For
example, for "PATCH v2 1/3" above, the references field will look like
so:
["0/3", "v2 0/3", "v2 1/3"]
Where "0/3" corresponds to the message-id of "PATCH 0/3".
By traversing this way, patches sent in-reply-to an existing series
will always be linked to that series, instead of creating a new series,
as expected. Flip things around, and instead attempt to find series
using the most recent message-id first. This will ensure the most
recent series is always used.
Signed-off-by: Stephen Finucane <stephen.finucane at intel.com>
---
patchwork/bin/parsemail.py | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/patchwork/bin/parsemail.py b/patchwork/bin/parsemail.py
index f52776e..8baacf6 100755
--- a/patchwork/bin/parsemail.py
+++ b/patchwork/bin/parsemail.py
@@ -137,7 +137,7 @@ def find_series(mail):
"""
series = None
- for ref in find_references(mail) + [mail.get('Message-ID').strip()]:
+ for ref in [mail.get('Message-ID').strip()] + find_references(mail)[::-1]:
# try parsing by RFC5322 fields first
try:
series_ref = SeriesReference.objects.get(msgid=ref)
@@ -575,6 +575,10 @@ def parse_mail(mail, list_id=None):
series.save()
for ref in refs + [msgid]: # save references for series
+ # prevent duplication
+ if SeriesReference.objects.filter(msgid=ref).exists():
+ continue
+
series_ref = SeriesReference(series=series,
msgid=ref)
series_ref.save()
@@ -621,6 +625,10 @@ def parse_mail(mail, list_id=None):
series.save()
for ref in refs + [msgid]: # save references for series
+ # prevent duplication
+ if SeriesReference.objects.filter(msgid=ref).exists():
+ continue
+
series_ref = SeriesReference(series=series,
msgid=ref)
series_ref.save()
--
1.7.4.1
More information about the Patchwork
mailing list