Add "gerrit deletedraft".
BUG=None
TEST=Run manually on a draft patch set
Change-Id: I2b98729bfce62798a3b45326152ee4498afe96ba
Reviewed-on: https://chromium-review.googlesource.com/189183
Reviewed-by: Jon Salz <jsalz@chromium.org>
Commit-Queue: Jon Salz <jsalz@chromium.org>
Tested-by: Jon Salz <jsalz@chromium.org>
diff --git a/lib/gerrit.py b/lib/gerrit.py
index 9704f49..ded8176 100644
--- a/lib/gerrit.py
+++ b/lib/gerrit.py
@@ -336,6 +336,14 @@
return
gob_util.RestoreChange(self.host, self._to_changenum(change))
+ def DeleteDraft(self, change, dryrun=False):
+ """Delete a draft patch set."""
+ if dryrun:
+ logging.info('Would have deleted draft patch set %s', change)
+ return
+ gob_util.DeleteDraft(self.host, self._to_changenum(change))
+
+
def GetGerritPatchInfo(patches):
"""Query Gerrit server for patch information.
diff --git a/lib/gob_util.py b/lib/gob_util.py
index ee8ffc9..10b35e5 100644
--- a/lib/gob_util.py
+++ b/lib/gob_util.py
@@ -297,6 +297,22 @@
return FetchUrlJson(host, path, reqtype='POST', body=body, ignore_404=False)
+def DeleteDraft(host, change, msg=''):
+ """Delete a gerrit draft patch set."""
+ path = 'changes/%s' % change
+ body = {'message': msg} if msg else None
+ try:
+ FetchUrl(host, path, reqtype='DELETE', body=body, ignore_404=False)
+ except GOBError as e:
+ # On success, gerrit returns status 204; anything else is an error.
+ if e.http_status != 204:
+ raise
+ else:
+ raise GOBError(
+ 'Unexpectedly received a 200 http status while deleting draft %r'
+ % change)
+
+
def SubmitChange(host, change, wait_for_merge=True):
"""Submits a gerrit change via Gerrit."""
path = 'changes/%s/submit' % change
diff --git a/scripts/gerrit.py b/scripts/gerrit.py
index 604a53f..0c9d9e1 100644
--- a/scripts/gerrit.py
+++ b/scripts/gerrit.py
@@ -270,6 +270,11 @@
opts.gerrit.SetReview(idx, msg=message)
+def UserActDeletedraft(opts, idx):
+ """Delete draft patch set <n>"""
+ opts.gerrit.DeleteDraft(idx)
+
+
def main(argv):
# Locate actions that are exposed to the user. All functions that start
# with "UserAct" are fair game.