Add support to list changes for review
Add -l, --list option to list all items available for review in the current project Change-Id: I7e5128a5867645b6331fa07402db2c76bfab92cd
This commit is contained in:

committed by
Monty Taylor

parent
3659abb069
commit
3531a5bffd
61
git-review
61
git-review
@@ -44,6 +44,12 @@ _branch_name = None
|
|||||||
_has_color = None
|
_has_color = None
|
||||||
|
|
||||||
|
|
||||||
|
class colors:
|
||||||
|
yellow = '\033[33m'
|
||||||
|
green = '\033[92m'
|
||||||
|
reset = '\033[0m'
|
||||||
|
|
||||||
|
|
||||||
def run_command(cmd, status=False, env={}):
|
def run_command(cmd, status=False, env={}):
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print datetime.datetime.now(), "Running:", cmd
|
print datetime.datetime.now(), "Running:", cmd
|
||||||
@@ -436,6 +442,56 @@ def get_topic(target_branch):
|
|||||||
return branch_name
|
return branch_name
|
||||||
|
|
||||||
|
|
||||||
|
def list_reviews(remote):
|
||||||
|
|
||||||
|
(hostname, team, username, port, project_name) = \
|
||||||
|
parse_git_show(remote, "Push")
|
||||||
|
|
||||||
|
ssh_cmds = ["ssh"]
|
||||||
|
if port is not None:
|
||||||
|
ssh_cmds.extend(["-p", port])
|
||||||
|
if username is not None:
|
||||||
|
ssh_cmds.extend(["-l", username])
|
||||||
|
ssh_cmd = " ".join(ssh_cmds)
|
||||||
|
|
||||||
|
query_string = "--format=JSON project:%s status:open" % project_name
|
||||||
|
review_info = None
|
||||||
|
(status, output) = run_command_status("%s %s gerrit query %s"
|
||||||
|
% (ssh_cmd, hostname, query_string))
|
||||||
|
|
||||||
|
if status != 0:
|
||||||
|
print "Could not fetch review information from gerrit"
|
||||||
|
print output
|
||||||
|
return status
|
||||||
|
|
||||||
|
for line in output.split("\n"):
|
||||||
|
# Warnings from ssh wind up in this output
|
||||||
|
if line[0] != "{":
|
||||||
|
print line
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
review_info = json.loads(line)
|
||||||
|
except:
|
||||||
|
if VERBOSE:
|
||||||
|
print output
|
||||||
|
print "Could not parse json query response:", sys.exc_info()[1]
|
||||||
|
return 1
|
||||||
|
|
||||||
|
if 'type' in review_info:
|
||||||
|
print "Found %d items for review" % review_info['rowCount']
|
||||||
|
break
|
||||||
|
|
||||||
|
change = review_info['number']
|
||||||
|
branch = review_info['branch']
|
||||||
|
subject = review_info['subject']
|
||||||
|
if check_color_support():
|
||||||
|
change = colors.yellow + change + colors.reset
|
||||||
|
branch = colors.green + branch + colors.reset
|
||||||
|
print "%s %s %s" % (change, branch, subject)
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def download_review(review, masterbranch, remote):
|
def download_review(review, masterbranch, remote):
|
||||||
|
|
||||||
(hostname, username, port, project_name) = \
|
(hostname, username, port, project_name) = \
|
||||||
@@ -581,6 +637,8 @@ def main():
|
|||||||
parser.add_argument("-f", "--finish", dest="finish", action="store_true",
|
parser.add_argument("-f", "--finish", dest="finish", action="store_true",
|
||||||
help="Close down this branch and switch back to "
|
help="Close down this branch and switch back to "
|
||||||
"master on successful submission")
|
"master on successful submission")
|
||||||
|
parser.add_argument("-l", "--list", dest="list", action="store_true",
|
||||||
|
help="list available reviews for the current project")
|
||||||
parser.add_argument("-y", "--yes", dest="yes", action="store_true",
|
parser.add_argument("-y", "--yes", dest="yes", action="store_true",
|
||||||
help="Indicate that you do, in fact, understand if "
|
help="Indicate that you do, in fact, understand if "
|
||||||
"you are submitting more than one patch")
|
"you are submitting more than one patch")
|
||||||
@@ -598,6 +656,7 @@ def main():
|
|||||||
verbose=False,
|
verbose=False,
|
||||||
update=False,
|
update=False,
|
||||||
setup=False,
|
setup=False,
|
||||||
|
list=False,
|
||||||
yes=False,
|
yes=False,
|
||||||
remote=config['defaultremote'])
|
remote=config['defaultremote'])
|
||||||
|
|
||||||
@@ -623,6 +682,8 @@ def main():
|
|||||||
if options.download is not None:
|
if options.download is not None:
|
||||||
print_exit_message(download_review(options.download, branch, remote),
|
print_exit_message(download_review(options.download, branch, remote),
|
||||||
needs_update)
|
needs_update)
|
||||||
|
elif options.list:
|
||||||
|
print_exit_message(list_reviews(remote), needs_update)
|
||||||
else:
|
else:
|
||||||
topic = options.topic
|
topic = options.topic
|
||||||
if topic is None:
|
if topic is None:
|
||||||
|
@@ -54,6 +54,8 @@ Sets the target topic for this change on the gerrit server.
|
|||||||
If not specified, a bug number from the commit summary will be used. Alternatively, the local branch name will be used if different from remote branch.
|
If not specified, a bug number from the commit summary will be used. Alternatively, the local branch name will be used if different from remote branch.
|
||||||
.It Fl u , Fl -update
|
.It Fl u , Fl -update
|
||||||
Skip cached local copies and force updates from network resources.
|
Skip cached local copies and force updates from network resources.
|
||||||
|
.It Fl l , Fl -list
|
||||||
|
List the available reviews on the gerrit server for this project.
|
||||||
.It Fl y , Fl -yes
|
.It Fl y , Fl -yes
|
||||||
Indicate that you do, in fact, understand if you are submitting more than
|
Indicate that you do, in fact, understand if you are submitting more than
|
||||||
one patch.
|
one patch.
|
||||||
|
Reference in New Issue
Block a user