[RFC] parsemail.py: Don't search for patches in replies
Keller, Jacob E
jacob.e.keller at intel.com
Fri Feb 7 10:02:27 EST 2014
Just adding that we have this problem occasionally. Would be nice of
Outlook wasn't such a broken email client. :(
Yea, I don't know of any better solution.. I don't think Outlook has any
other marker for reply addresses.
Thanks,
Jake
On Thu, 2014-02-06 at 14:49 -0800, Markus Mayer wrote:
> Make sure we don't attempt to search for a patch in a reply e-mail.
> There are MUAs out there who leave the quoted e-mail intact without
> prepending quote characters such as ">" at the beginning of each line.
>
> When that happens, parse_patch() thinks the quoted patch is new. The
> result are multiple database entries containing the same patch (one for
> each such reply) when one would really expect a consolidated thread
> containing the entire discussion and only one copy of the patch.
>
> Signed-off-by: Markus Mayer <markus.mayer at linaro.org>
> ---
> This problem is mainly caused when replies to patches are sent using
> Outlook.
>
> The approach below seems to work, although there is the downside that
> it relies on English MUA settings. If a mail client translates "Re:" to
> some other string such as "AW:" the proposed code will not detect that
> the e-mail in question is a reply. (Although it wouldn't be any worse
> than it is now.)
>
> To avoid this, I tried using the presence of "In-Reply-To:" and
> "References:" headers to detect a reply, but "git send-email" inserts
> references into patches that aren't replies (e.g. v2 of a patch
> referencing v1), which then leads to the opposite problem: mails being
> categorized as replies when they are not.
>
> So, checking for "Re:" still seems to be the better option. Please let
> me know your thoughts.
>
> apps/patchwork/bin/parsemail.py | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/apps/patchwork/bin/parsemail.py b/apps/patchwork/bin/parsemail.py
> index b6eb97a..405fb69 100755
> --- a/apps/patchwork/bin/parsemail.py
> +++ b/apps/patchwork/bin/parsemail.py
> @@ -151,6 +151,8 @@ def find_content(project, mail):
> patchbuf = None
> commentbuf = ''
> pullurl = None
> + subject = mail.get('Subject')
> + is_reply = (subject.lower().find("re:") == 0)
>
> for part in mail.walk():
> if part.get_content_maintype() != 'text':
> @@ -185,8 +187,8 @@ def find_content(project, mail):
> patch = None
> comment = None
>
> - if pullurl or patchbuf:
> - name = clean_subject(mail.get('Subject'), [project.linkname])
> + if not is_reply and (pullurl or patchbuf):
> + name = clean_subject(subject, [project.linkname])
> patch = Patch(name = name, pull_url = pullurl, content = patchbuf,
> date = mail_date(mail), headers = mail_headers(mail))
>
More information about the Patchwork
mailing list