Pull requests with patches

Dirk Wallenstein halsmit at t-online.de
Wed Feb 9 05:40:32 EST 2011


On Tue, Feb 08, 2011 at 03:22:35PM -0200, Guilherme Salgado wrote:
> 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
> 

If you remove two spaces in front of the last added line, the diff will
be smaller and easier to review.  Indentation should be a multiple of 4.
With that change:
Reviewed-by: Dirk Wallenstein <halsmit at t-online.de>

-- 
Greetings,
Dirk


More information about the Patchwork mailing list