Pull requests with patches
Dirk Wallenstein
halsmit at t-online.de
Wed Feb 9 06:11:35 EST 2011
On Tue, Feb 08, 2011 at 04:54:13PM -0200, Guilherme Salgado wrote:
> On Tue, 2011-02-08 at 19:40 +0100, Dirk Wallenstein wrote:
> > 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>
>
> Thanks for the review, Dirk.
>
> I've added the two spaces to align the arguments on the second line with
> the ones on the first, which is the style used in PEP-8 examples, but
Oh, indeed. Haven't noticed that. I always use two additional levels.
However, I think, whitespace changes on lines that don't change
otherwise are best placed in separate commits -- easier to review.
--
Greetings,
Dirk
More information about the Patchwork
mailing list