blob: 36c668b6ca0673e57b06fe2afc52ae4321951e30 [file] [log] [blame]
# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#### CATEGORY=Code submission and review
#### EXECUTABLE=${FUCHSIA_DIR}/tools/devshell/contrib/gerrit-submit-lib/python_wrapper.sh
### Submits chains of CLs to Gerrit
## usage: submit.py [-h] [--host HOST] [--num-retries N] [-n] [-t] [--ignore-comments] CL
##
## Submit a chain of CLs, specified by giving the CL number of the end of the
## chain. The command will poll indefinitely until the chain is submitted or an
## error is detected.
##
## The tool can be safely cancelled at any time. When restarted, it will resume
## where it left off.
##
## For example, given a chain of three CLs:
##
## 101: Start hacking on 'foo'.
## 102: More hacking on 'foo'.
## 103: Finish hacking on 'foo'.
##
## The command:
##
## fx gerrit-submit 103
##
## will:
##
## 1. Add a CQ+1 vote to all the CLs, to start testing them.
## 2. Add a CQ+2 vote for the first CL, and wait for it to be submitted.
## 3. Add a CQ+2 vote for the second CL, and wait for it to be submitted.
## 4. Add a CQ+2 vote for the last CL, and wait for it to be submitted.
##
## Adding a CQ+1 to every CL at the beginning speeds up submission: CQ won't
## need to re-test intermediate CLs if they are not modified in the meantime.
##
## If any CL is not ready to submit (for example, it is missing a vote, or has
## unresolved comments), the tool will abort early.
##
## By default, the tool will use the "fuchsia-review.googlesource.com" Gerrit
## instances. Other instances can be specified using the "--host" parameter:
##
## fx gerrit-submit --host myteam-review.googlesource.com 12345
##
## positional arguments:
## CL Gerrit CL to submit. May either be a CL number or Gerrit
## Change-ID.
##
## optional arguments:
## -h, --help show this help message and exit
## --host HOST Gerrit host to connect to.
## Defaults to "fuchsia-review.googlesource.com".
## --num-retries N number of times to retry a failed submission.
## Defaults to 0.
## -n, --dry-run If specified, show the set of CLs that would be
## submitted, but dont actually submit.
## -t, --batch If specified, dont prompt before starting submit.
## --ignore-comments If specified, allow submission of CLs that still have
## unresolved comments on them.