Index: gerrit_util.py |
diff --git a/gerrit_util.py b/gerrit_util.py |
index 53dc69c0c6d2806231e86f97e520faa7edb0e9ee..727626fe08c9cc3a40c6a456d96ec8abfeda190b 100755 |
--- a/gerrit_util.py |
+++ b/gerrit_util.py |
@@ -530,6 +530,38 @@ def SubmitChange(host, change, wait_for_merge=True): |
return ReadHttpJsonResponse(conn, ignore_404=False) |
+def SetCommitMessage(host, change, description): |
+ """Updates a commit message.""" |
+ # First, edit the commit message in a draft. |
+ path = 'changes/%s/edit:message' % change |
+ body = {'message': description} |
+ conn = CreateHttpConn(host, path, reqtype='PUT', body=body) |
+ try: |
+ ReadHttpResponse(conn, ignore_404=False) |
+ except GerritError as e: |
+ # On success, gerrit returns status 204; anything else is an error. |
+ if e.http_status != 204: |
+ raise |
+ else: |
+ raise GerritError( |
+ 'Unexpectedly received a 200 http status while editing message in ' |
+ 'change %s' % change) |
+ |
+ # And then publish it. |
+ path = 'changes/%s/edit:publish' % change |
+ conn = CreateHttpConn(host, path, reqtype='POST', body={}) |
+ try: |
+ ReadHttpResponse(conn, ignore_404=False) |
+ except GerritError as e: |
+ # On success, gerrit returns status 204; anything else is an error. |
+ if e.http_status != 204: |
+ raise |
+ else: |
+ raise GerritError( |
+ 'Unexpectedly received a 200 http status while publishing message ' |
+ 'change in %s' % change) |
+ |
+ |
def GetReviewers(host, change): |
"""Get information about all reviewers attached to a change.""" |
path = 'changes/%s/reviewers' % change |