Beanstalk post-receive web hook

Review Request #5698 — Created April 10, 2014 and submitted

Information

Review Board
master
b77457d...

Reviewers

This is a Beanstalk post-receive hook that will automatically close review requests as "submitted" after a push. To determine which review requests should be closed, it scans through each commit's commit message for the following strings (case-insensitive): "Reviewed at <reviewboard_url>/r/<id>" or "Review request #<id>".

This is what the JSON payload looks like:
http://support.beanstalkapp.com/customer/portal/articles/75753-trigger-a-url-on-commit-with-web-hooks

Test carried out on git and svn repos.

1) Push with the review request id in the commit message. Review request closed. [PASSED]
2) Push without a review request id in the commit message. (Review request closed based on the commit_id for git and error looged for svn) [PASSED].
3) Push with non existent review request id. (Error: Review request does not exist) [PASSED]
4) Push with review id in the message that is already submitted. (logged a warning: request id already submitted.) [PASSED]
5) Push with review id in the message that has been marked as discarded. (review request marked as submitted.) [PASSED]

Description From Last Updated

Remove this line.

daviddavid

Remove this line.

daviddavid

We've switched over to using the new exception syntax: try: ... except KeyError as e: ...

daviddavid

We've switched over to using the new exception syntax: try: ... except KeyError as e: ...

daviddavid

How would you feel about introducing another method that could do this check and fan out to the individual implementations?

daviddavid

So the individual implementations close the review requests or they just return the review_id_to_commits map as they do now ?

B. b.ramnani

dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

daviddavid

Two blank lines between top-level things.

daviddavid

Can you try to shorten and/or re-wrap this to keep it under 80 columns?

daviddavid

dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

daviddavid

dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

daviddavid

Two blank lines between top-level things.

daviddavid

Can you try to shorten and/or re-wrap this to keep it under 80 columns?

daviddavid

dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

daviddavid
B.
B.
david
  1. 
      
  2. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    Remove this line.

  3. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    Remove this line.

  4. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    We've switched over to using the new exception syntax:

    try:
        ...
    except KeyError as e:
        ...
    
  5. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    We've switched over to using the new exception syntax:

    try:
        ...
    except KeyError as e:
        ...
    
  6. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
     
     
     
     
     
     
    Show all issues

    How would you feel about introducing another method that could do this check and fan out to the individual implementations?

  7. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

  8. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    Two blank lines between top-level things.

  9. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
     
     
     
    Show all issues

    Can you try to shorten and/or re-wrap this to keep it under 80 columns?

  10. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

  11. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
     
    Show all issues

    dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

  12. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    Two blank lines between top-level things.

  13. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
     
     
     
    Show all issues

    Can you try to shorten and/or re-wrap this to keep it under 80 columns?

  14. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
    Show all issues

    dict.get() defaults to None if the key doesn't exist, so you don't need to specify this second parameter.

  15. 
      
B.
  1. 
      
  2. reviewboard/hostingsvcs/beanstalk.py (Diff revision 2)
     
     
     
     
     
     
     
     
    Show all issues

    So the individual implementations close the review requests or they just return the review_id_to_commits map as they do now ?

  3. 
      
B.
B.
B.
B.
Review request changed
Status:
Completed
Change Summary:
Pushed to master (4bd49ff)
david
  1. Ship It!

  2.