From 7625d880d7a0f2e272dd1c9a7e9fba0de8885497 Mon Sep 17 00:00:00 2001 From: Aaron Gable Date: Mon, 26 Jun 2017 09:47:26 -0700 Subject: [PATCH] git-cl-description: use atomic edit API https://gerrit-review.googlesource.com/c/110057/ has been deployed, so this change can now take advantage of that new API to make git-cl-description more reliable. Both the API to add content to a change edit and to publish a change edit return '204 No Content' on a successful call, but this API returns 200. It seems likely to me that one or the other will change, so this calling code accepts both codes for future-proofness. Bug: gerrit:5099 Change-Id: I14d5323f92c807036f8aa11b314d10706c51dbf5 Reviewed-on: https://chromium-review.googlesource.com/544118 Commit-Queue: Aaron Gable Reviewed-by: Robbie Iannucci Reviewed-by: Andrii Shyshkalov --- gerrit_util.py | 44 ++++++++++---------------------------------- 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/gerrit_util.py b/gerrit_util.py index f2020bedd..bd3043d48 100755 --- a/gerrit_util.py +++ b/gerrit_util.py @@ -612,41 +612,17 @@ def DeletePendingChangeEdit(host, change): def SetCommitMessage(host, change, description, notify='ALL'): """Updates a commit message.""" + assert notify in ('ALL', 'NONE') + path = 'changes/%s/message' % change + body = {'message': description} + conn = CreateHttpConn(host, path, reqtype='PUT', body=body) try: - assert notify in ('ALL', 'NONE') - # 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, accept_statuses=[204]) - except GerritError as e: - raise GerritError( - e.http_status, - 'Received unexpected 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={'notify': notify}) - try: - ReadHttpResponse(conn, accept_statuses=[204]) - except GerritError as e: - raise GerritError( - e.http_status, - 'Received unexpected http status while publishing message ' - 'in change %s' % change) - - except (GerritError, KeyboardInterrupt) as e: - # Something went wrong with one of the two calls, so we want to clean up - # after ourselves before returning. - try: - DeletePendingChangeEdit(host, change) - except GerritError: - LOGGER.error('Encountered error while cleaning up after failed attempt ' - 'to set the CL description. You may have to delete the ' - 'pending change edit yourself in the web UI.') - raise e + ReadHttpResponse(conn, accept_statuses=[200, 204]) + except GerritError as e: + raise GerritError( + e.http_status, + 'Received unexpected http status while editing message ' + 'in change %s' % change) def GetReviewers(host, change):