• 
      

    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.