Commit b8268cad authored by Andrii Shyshkalov's avatar Andrii Shyshkalov Committed by Commit Bot

Reland "git cl status: differentiate "dry-run" from generic "commit"."

This is a reland of 3c830222 with a fix.
Previous CL relied on summary data of CQ votes provided by Gerrit,
which apparently isn't always present in the way I expected.
This resulted in "git cl status" returning "lgtm" instead of "commit"
on Skia recipe roll CLs, which resulted in recipe roller abandoning CLs,
and creating new ones (there might be a bug in recipe roller, too).

The fix is to iterate over all votes on CQ label and finding the highest
score, and then deciding on the state.

Original change's description:
> git cl status: differentiate "dry-run" from generic "commit".
>
> CQ vote       now       before
>   +2       "commit"    "commit"
>   +1       "dry-run"   "commit"
>
> R=ehmaldonado
>
> Tested: manual "git cl status" run locally.
> Change-Id: I342a3ac0830a67bf0e722c737ef00460a0df4b98
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1548287
> Auto-Submit: Andrii Shyshkalov <tandrii@chromium.org>
> Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
> Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>

Change-Id: If9af5a2bf8f21d203b7a62740a27916eca0838ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1549640
Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
Reviewed-by: 's avatarEdward Lesmes <ehmaldonado@chromium.org>
parent 25eb154c
......@@ -2064,6 +2064,7 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase):
* 'waiting' - waiting for review
* 'reply' - waiting for uploader to reply to review
* 'lgtm' - Code-Review label has been set
* 'dry-run' - dry-running in the commit queue
* 'commit' - in the commit queue
* 'closed' - successfully submitted or abandoned
"""
......@@ -2079,10 +2080,14 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase):
if data['status'] in ('ABANDONED', 'MERGED'):
return 'closed'
if data['labels'].get('Commit-Queue', {}).get('approved'):
# The section will have an "approved" subsection if anyone has voted
# the maximum value on the label.
cq_label = data['labels'].get('Commit-Queue', {})
max_cq_vote = 0
for vote in cq_label.get('all', []):
max_cq_vote = max(max_cq_vote, vote.get('value', 0))
if max_cq_vote == 2:
return 'commit'
if max_cq_vote == 1:
return 'dry-run'
if data['labels'].get('Code-Review', {}).get('approved'):
return 'lgtm'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment