Pull requests with patches

Guilherme Salgado guilherme.salgado at linaro.org
Wed Feb 9 04:22:35 EST 2011


On Tue, 2011-02-08 at 12:39 -0200, Guilherme Salgado wrote:
> Hi,
> 
> I was looking at how patchwork deals with pull requests and noticed that
> when it parses a message containing both a pull request and a patch, it
> will create two Patch() instances (one with the patch as its content and
> the other without content but with a pull_url):
> 
>     if patchbuf:
>         mail_headers(mail)
>         name = clean_subject(mail.get('Subject'), [project.linkname])
>         patch = Patch(name = name, content = patchbuf,
>                     date = mail_date(mail), headers = mail_headers(mail))
> 
>     if pullurl:
>         name = clean_subject(mail.get('Subject'), [project.linkname])
>         patch = Patch(name = name, pull_url = pullurl,
>                     date = mail_date(mail), headers = mail_headers(mail))
> 
> However, these are not automatically inserted in the DB, so only the
> second ends up being saved.
> 
> I think it would make sense to create a single Patch() instance in this
> case with both a pull_url and the patch content (although it may be
> necessary to change the template to render such a patch correctly). Is
> there anything that would prevent that from working?

The existing template is able to handle a patch containing both a
pull_url and a non-empty content, and the small change below will make
sure the diff is never thrown away.  If there's interest in this change
I'd be happy to write a test case for it.


---
 apps/patchwork/bin/parsemail.py |   12 +++---------
 1 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/apps/patchwork/bin/parsemail.py b/apps/patchwork/bin/parsemail.py
index 700cb6f..9f3561c 100755
--- a/apps/patchwork/bin/parsemail.py
+++ b/apps/patchwork/bin/parsemail.py
@@ -183,16 +183,10 @@ def find_content(project, mail):
     patch = None
     comment = None
 
-    if patchbuf:
-        mail_headers(mail)
+    if pullurl or patchbuf:
         name = clean_subject(mail.get('Subject'), [project.linkname])
-        patch = Patch(name = name, content = patchbuf,
-                    date = mail_date(mail), headers = mail_headers(mail))
-
-    if pullurl:
-        name = clean_subject(mail.get('Subject'), [project.linkname])
-        patch = Patch(name = name, pull_url = pullurl,
-                    date = mail_date(mail), headers = mail_headers(mail))
+        patch = Patch(name = name, pull_url = pullurl, content = patchbuf,
+                      date = mail_date(mail), headers = mail_headers(mail))
 
     if commentbuf:
         if patch:
-- 
1.7.1


-- 
Guilherme Salgado <https://launchpad.net/~salgado>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/patchwork/attachments/20110208/aca895fb/attachment.pgp>


More information about the Patchwork mailing list