diff --git a/tools/repo_pull/gerrit.py b/tools/repo_pull/gerrit.py index a27982893..9679d9d0c 100755 --- a/tools/repo_pull/gerrit.py +++ b/tools/repo_pull/gerrit.py @@ -257,6 +257,14 @@ def abandon(url_opener, gerrit_url, change_id, message): return _make_json_post_request(url_opener, url, data) +def restore(url_opener, gerrit_url, change_id): + """Restore a change list.""" + + url = '{}/a/changes/{}/restore'.format(gerrit_url, change_id) + + return _make_json_post_request(url_opener, url, {}) + + def set_topic(url_opener, gerrit_url, change_id, name): """Set the topic name.""" diff --git a/tools/repo_pull/repo_review.py b/tools/repo_pull/repo_review.py index 74ad96f39..e62820fbd 100755 --- a/tools/repo_pull/repo_review.py +++ b/tools/repo_pull/repo_review.py @@ -32,7 +32,7 @@ except ImportError: from gerrit import ( abandon, add_reviewers, create_url_opener_from_args, delete_reviewer, - delete_topic, find_gerrit_name, query_change_lists, set_hashtags, + delete_topic, find_gerrit_name, query_change_lists, restore, set_hashtags, set_review, set_topic, submit ) @@ -103,6 +103,7 @@ def _parse_args(): parser.add_argument('--submit', action='store_true', help='Submit a CL') parser.add_argument('--abandon', help='Abandon a CL with a message') + parser.add_argument('--restore', action='store_true', help='Restore a CL') parser.add_argument('--add-hashtag', action='append', help='Add hashtag') parser.add_argument('--remove-hashtag', action='append', @@ -131,6 +132,8 @@ def _has_task(args): return True if args.abandon is not None: return True + if args.restore: + return True if args.add_hashtag or args.remove_hashtag: return True if args.set_topic or args.delete_topic: @@ -197,7 +200,7 @@ def main(): sys.exit(1) if not _has_task(args): - print('error: Either --label, --message, --submit, --abandon, ' + print('error: Either --label, --message, --submit, --abandon, --restore, ' '--add-hashtag, --remove-hashtag, --set-topic, --delete-topic, ' '--add-reviewer or --delete-reviewer must be specified', file=sys.stderr) @@ -247,6 +250,9 @@ def main(): if args.abandon: _do_task(change, abandon, url_opener, args.gerrit, change['id'], args.abandon, errors=errors) + if args.restore: + _do_task(change, restore, url_opener, args.gerrit, change['id'], + errors=errors) if args.add_reviewer: _do_task(change, add_reviewers, url_opener, args.gerrit, change['id'], new_reviewers, errors=errors)